a = np.array([[1, 3], [2, 4]])
b = np.array([[5, 1], [2, 2]])
print(type(a), type(b))
##<class 'numpy.ndarray'> <class 'numpy.ndarray'>
求和(np.add)
print(a + b) # [[6 4] [4 6]] print(np.add(a, b)) # [[6 4] [4 6]]
求差(np.substract)
print(b - a) # [[ 4 -2] [ 0 -2]] print(np.subtract(b, a)) # [[ 4 -2] [ 0 -2]]
求积(np.dot、np.matmul、np.multiply、*)
#求积 print(np.matmul(a, b)) # [[11 7] [18 10]] print(np.dot(a, b)) # [[11 7] [18 10]] print(np.multiply(a, b)) # [[5 3] [4 8]] print(a * b) # [[5 3] [4 8]] a_m = np.mat([[1, 3], [2, 4]]) b_m = np.mat([[5, 1], [2, 2]]) print(type(a_m), type(b_m)) # <class 'numpy.matrix'> <class 'numpy.matrix'> print(np.matmul(a_m, b_m)) # [[11 7] [18 10]] print(np.dot(a_m, b_m)) # [[11 7] [18 10]] print(np.multiply(a_m, b_m)) # [[5 3] [4 8]] print(a_m * b_m) # [[11 7] [18 10]]
由上面可以看出:
对于array类型来说 :只有matmul、dot方法执行矩阵乘法 而 multiply、*则执行对应位的相乘。
对于matrix类型来说:只有matmul、dot、*方法执行矩阵相乘 而 multiply则执行对应位相乘。
所以通常采用matnul或者dot进行矩阵相乘,multiply进行对应为相乘。