python 自学笔记13 numpy数组规整
一图流操作示意。
数组塑形
升高维度
import numpy as np
a = np.arange(12) # 创建一个长度为 12 的一维数组
b = np.reshape(a, (3, 4)) # 改变为 3 行 4 列的二维数组
c = np.reshape(a, (2, 3, 2)) # 改变为 2 个 3 行 2 列的三维数组
降低维度
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.reshape(a, -1) # 将二维数组展开为一维数组
改变存储顺序
import numpy as np
a = np.arange(6).reshape((2, 3)) # 创建一个 2 行 3 列的二维数组
b = np.reshape(a, (3, 2), order='F') # 按列顺序存储
一维数组变成行向量和列向量
-1代表这个轴自适应填入
一维数组 → 二维数组
一维数组 → 三维数组
视图 vs 副本
视图是数据在内存中同一组数据存储,而不同的视图展示方式不同。
转置
一维数组转置
# 一维数组的转置还是其本身
a_1D_array.T
# 请大家学习使用numpy.swapaxes()
二维数组
有两种转置方式
a_row_vector.T # 第一种
np.transpose(a_row_vector) # 第二种
扁平化
例子:
A_3_by_5.ravel()
旋转、翻转
堆叠
按行堆叠
沿列堆叠
其中 numpy.hstack() 函数对一维数组只能起到拼接的作用,对列向量起到堆叠的作用:
拼接
堆叠结果为三维数组
可以看成将一个立方体不同的摆放位置,但是坐标轴不变。
示例代码:
A_B_1 = np.stack((A, B), axis=1)
# dimension 1
A_B_1
重复
按元素重复
按数组重复
分块矩阵
合成
示例代码:
M = np.block([[A, np.zeros((2, 3))],[np.zeros((3, 2)), B ]])