课题:NumPy(二)运算
np.reshape(shape) # 不改变当前数组,按照shape创建新的数组
np.resize(shape) # 改变当前数组,按照shape创建数组
创建数组并且改变形状:
>>>t = np.arange(24).reshape(2, 3, 4)
>>>t
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
维度推算
# 如果为某一维度设为-1,则表示该维度的个数不确定,让np去推测
>>>b = np.arange(12)
>>>b
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
>>>b.reshape(-1,2) # 自动推测第0维的元素个数
array([[ 0, 1],
[ 2, 3],
[ 4, 5],
[ 6, 7],
[ 8, 9],
[10, 11]])
>>>b.reshape(-1) # 变回一维数组
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
加法
>>>a = np.array([0,1,2,3])
>>>b = np.array([3,1,2,3])
>>>a+b # shape应一致
array([3, 2, 4, 6])
# 一维数组可以和多维数组相加,自动广播
>>>a
array([0, 1, 2, 3])
>>>b = np.array([[0,1,2,3],[4,5,6,7],[8,9,10,11]])
>>>a+b
array([[ 0, 2, 4, 6],
[ 4, 6, 8, 10],
[ 8, 10, 12, 14]])
- 数组间的减法、乘法、除法运算,和加法运算规则相同。
- 当两个数组中元素的数据类型不同时,精度低的数据类型,会自动转换为精度更高的数据类型,然后再进行运算。
幂运算
求每个元素的n次方
>>>a
array([0, 1, 2, 3])
>>>a ** 2
array([0, 1, 4, 9], dtype=int32)
几种常见的矩阵运算
- 矩阵运算——矩阵乘法
乘号运算符:矩阵中对应元素分别相乘
>>>A = np.array(
[[1,1],
[0,1]]
)
>>>B = np.array(
[[2,0],
[3,4]]
)
>>>A * B
array([[2, 0],
[0, 4]])
- 矩阵相乘:按照矩阵相乘的规则运算
>>>np.matmul(A, B) # 或 np.dot(A, B)
>>>np.dot(A, B)
array([[5, 4],
[3, 4]])
>>>np.matmul(A, B)
array([[5, 4],
[3, 4]])
- 矩阵运算————转置和求逆
# 矩阵转置:np.transpose()
# 举证求逆:np.linalg.inv()
>>>A.transpose()
array([[1, 0],
[1, 1]])
>>>np.linalg.inv(A)
array([[ 1., -1.],
[ 0., 1.]])