Numpy模块学习笔记3:数组的重塑、转置、连接、分割与元素增删

1、二维矩阵的重塑和转置
b = a.reshape(3,2) //将元素数为3*2=6的矩阵a重塑为3行2列的矩阵b
c = b.transpose(2,0,1) //c为a的转置
2、高维矩阵的重塑和转置
b = a.reshape(3,2,4) //将元素数为3*2*4=24的矩阵a重塑为三维为(3,2,4)的矩阵b
c = b.transpose(2,0,1) //高维矩阵的转置,2、0、1分别对应第1维、第3维、第2维,即原来在(2,3,1)位置的元素被房子在(1,2,3)位置上
d = b.swapaxes(2,1) //将b的第2维和第3维置换,生成新数组d
3、连接与堆叠数组
c = np.concatenate((a,b)) // 纵向连接两个数组
d = np.concatenate((a,b),axis = 1) //横向连接两个数组

e = np.stack((a,b),0) // a和b的形状相同,纵向堆叠
f = np.stack((a,b),1) //a和b形状相同,横向堆叠

例如:
a = np.array([[1,2],[3,4]])
b = np.array([[5,6],[7,8]])

纵向堆叠:
[[[1 2]
  [3 4]]

 [[5 6]
  [7 8]]]

横向堆叠:
[[[1 2]
  [5 6]]

 [[3 4]
  [7 8]]]
4、分割数组
a = np.array([1,2,3,4,5,6,7,8,9])
b = np.split(a,3) //将a等分为三个大小相等的子数组
c = np.split(a,[4,7]) //将a在第5个数字和第8个数字处切割,得到三个子数组

y = np.hsplit(x,3) //水平分割
z = np.vsplit(x,2) //垂直分割

例如:
原array:
x = [[4. 7. 6. 3. 2. 6.]
       [6. 3. 6. 7. 9. 7.]]

拆分后:
y = [array([[4., 7.],
                 [6., 3.]]), 
       array([[6., 3.],
                 [6., 7.]]), 
       array([[2., 6.],
                 [9., 7.]])]

z =[array([[4. 7. 6. 3. 2. 6.]]),
      array([[6. 3. 6. 7. 9. 7.]])]
5、元素添加与删除
b = np.append(a, [[7,8,9]],axis = 0) //纵向添加元素,a的列数为3
c = np.append(a, [[5,5,5],[7,8,9]],axis = 1) // 横向添加元素,a的行数为2

d = np.insert(a,1,[11],axis = 0) //在a的第2行前插入值11重复组成的行,即11的值横向广播

e = np.insert(a,1,11,axis = 1) //在a的第2列前插入值11重复组成的列,即11的值纵向广播

f = np.delete(a,1,axis = 1) //删除a的第二列

g = np.unique(a) //a的去重数组

 

 
posted @ 2021-01-18 21:58  venko  阅读(190)  评论(0)    收藏  举报