1.变形(np.reshape)
import numpy as np
n = np.arange(1,21)
print('n:',n)
print('n的形状:',n.shape)
#变成二维
x = np.reshape(n,(4,5))
print('x:',x)
print('x的形状:',x.shape)
y = n.reshape(5,4)
print('y:',y)
print('y的形状:',y.shape)
#还原为一维
m = y.reshape(20)
print('m:',m)
print('m的形状:',m.shape)
a = y.reshape(-1)
print('a:',a)
print('a的形状:',a.shape)
#使用-1来表示任意剩余维度长度
b = n.reshape(4,-1)
print('b:',b)
print('b的形状:',b.shape)
c = n.reshape(-1,4)
print('c:',c)
print('c的形状:',c.shape)
- ⚠️注意:变形过后的元素总个数要和原元素总个数一致,例如变形前元素个数有20个,变形为4行5列后元素个数依旧是20,此变形正确;如果变形为4行6列,变形后的元素个数为24,此变形错误,代码会报错;在使用-1变换维度时,不可同时出现两个-1,否则代码会报错。
2.级联(np.concatenate)
- 参数是列表或者元组
- 维度必须相同
- 可以通过axis参数改变级联的方向
import numpy as np
n1 = np.random.randint(0,100,size=(3,5))
n2 = np.random.randint(0,100,size=(3,5))
print('n1:',n1)
print('n2:',n2)
#默认行级联
x = np.concatenate((n1,n2))
print('x:',x)
#通过axis=0,设置为第一个维度(行)级联
y = np.concatenate((n1,n2),axis=0)
print('y:',y)
#通过axis=1,设置为第二个维度(列)级联
z = np.concatenate((n1,n2),axis=1)
print('z:',z)
- np.hstack(水平级联)与np.vstack(垂直级联)
import numpy as np
n1 = np.random.randint(0,100,size=(3,5))
n2 = np.random.randint(0,100,size=(3,5))
print('n1:',n1)
print('n2:',n2)
#水平级联
x = np.hstack((n1,n2))
print('x:',x)
#垂直级联
y = np.vstack((n1,n2))
print('y:',y)
3.拆分
- np.split
import numpy as np
n = np.random.randint(0,100,size=(6,4))
print('n:',n)
#默认按行拆分
x = np.split(n,2)
print('x:',x)
#axis=0控制按行拆分
y = np.split(n,2,axis=0)
print('y:',y)
#axis=1控制按列拆分
z = np.split(n,2,axis=1)
print('z:',z)
- np.vsplit(n,拆分份数/指定拆分位置)
import numpy as np
n = np.random.randint(0,100,size=(6,4))
print('n:',n)
#平均拆分为三份
x = np.vsplit(n,3)
print('x:',x)
#指定位置拆分,第一个数之前的数据为一整块拆出
y = np.vsplit(n,(1,2,4))
print('y:',y)
- np.hsplit(n,拆分份数/指定拆分位置)
import numpy as np
n = np.random.randint(0,100,size=(6,4))
print('n:',n)
#平均拆分为三份
x = np.hsplit(n,2)
print('x:',x)
#指定位置拆分,第一个数之前的数据为一整块拆出
y = np.vsplit(n,(1,3))
print('y:',y)
4.数组的拷贝(np.copy) -----此拷贝为深拷贝
- 不使用拷贝的结果
import numpy as np
n = np.arange(10)
print('初始n的数据:',n)
x = n
x[0] = 100
print('x的数据:',x)
print('x改变后n的数据:',n)
- 使用拷贝的结果
import numpy as np
n = np.arange(10)
print('初始n的数据:',n)
x = n.copy()
x[0] = 100
print('x的数据:',x)
print('x改变后n的数据:',n)
知识点为听课总结笔记,课程为B站“千锋教育NumPy教程,保姆级基础入门Python数据分析”:017_NumPy_ndarray常用属性_哔哩哔哩_bilibili