[Numpy]array与matrix在乘法上的不同
1 Numpy乘法的实现
运算 |
解释 |
* |
array:对应元素相乘,matrix:矩阵相乘 |
np.dot |
矩阵相乘 |
np.multiply |
对应元素相乘 |
2 上代码(array,matrix在*,dot,multiply上的异同)
2.1 定义array和matrix两个矩阵
import numpy as np
array = np.array([[1,2],[3,4]])
matrix = np.matrix('1 2;3 4')
print('array')
print(array)
print('matrix')
print(matrix)
print('-' * 20)
2.2 取array和matrix的第一行
print('array[0]:')
print(array[0])
print('matrix[0]:')
print(matrix[0])
print('-' * 20)
注:matrix只要取到的最终结果不是数字,就会保留二维矩阵的形式,但array不会,array[0]是一个行向量
2.3 取array和matrix的第一列
print('array[:,0]')
print(array[:,0])
print('matrix[:,0]')
print(matrix[:,0])
print('-' * 20)
array[:,0]–>返回的是一个行向量,对应array的第0列的列向量,而matrix[;,0]以矩阵的形式保存列向量
2.4 array进行乘法运算(*,dot,multiply)
print(array)
print(array * array)
在array中*为对应元素相乘
array=[1324]
array∗array=[1⋅13⋅32⋅24⋅4]=[19416]
print(np.multiply(array,array))
注:此处np.multiply(array,array) 等价于 array * array
print(array * array[0])
array=[1324]
array[0]=[12]
array∗array[0]=np.multiply(array,array[0])=[1⋅13⋅12⋅24⋅2]=[1348]
print(array * np.array([array[:,0]]).T)
array=[1324]
np.array([array[:,0]]).T=[13]
array∗np.array([array[:,0]]).T=[1⋅13⋅32⋅14⋅3]=[19212]
print(np.dot(array,array))
array=[1324]
np.dot(array,array)=[1⋅1+2⋅33⋅1+4⋅31⋅2+2⋅43⋅2+4⋅4]=[7151022]
2.5 matrix进行乘法运算(*,dot,multiply)
print(matrix * matrix)
print(np.dot(matrix,matrix))
matrix=[1324]
np.dot(matrix,matrix)=matrix∗matrix=[1⋅1+2⋅33⋅1+4⋅31⋅2+2⋅43⋅2+4⋅4]=[7151022]
print(
np.multiply(matrix matrix)
)
matrix=[1324]
np.multiply(matrix,matrix)=[1⋅13⋅32⋅24⋅4]=[19416]