python中array、matrix及相关的乘法dot、*、multiply

# Numpy matrices必须是2维的
# 但是numpy arrays(ndarrays)可以是多维的(1D,2D,3D····ND)
# Matrix是Array的一个小的分支,包含于Array。所以matrix拥有array的所有特性

# matrix和array都可以通过objects后面加.T得到其转置。
# 但是matrix objects还可以在后面加.H f得到共轭矩阵, 加.I得到逆矩阵

# array的操作一般都是逐个元素的

import numpy as np

a = np.array([1, 2, 1])
b = np.array([1, 2, 2])
c_mat = np.mat('4 3;2 1')
d_mat = np.mat('1 2;3 4')
c_array = np.array([[4,3],[2,1]])
d_array = np.array([[1,2],[3,4]])

print(a*b)
# 元素相乘
# a*b = [1 4 2]

print(c_mat*d_mat)
# 矩阵相乘
# c_mat*d_mat = [[13 20]
#               [ 5  8]]

print(c_array*d_array)
# 元素相乘
# c_array*d_array = [[4 6]
#                   [6 4]]

print(np.dot(c_array, d_array))
# 想要array实现矩阵相乘,则必须使用np.dot()
# np.dot(c_array, d_array) = [[13 20]
#                            [ 5  8]]

print( c_mat**2 )
# 返回c_mat*c_mat
# c_mat**2 = [[22 15]
#           [10  7]]

print(c_array**2)
# 返回c_array中逐个元素求平方
# c_array**2 = [[16  9]
#             [ 4  1]]

print(np.dot(a,b))
# 对于秩为1的数组,np.dot()执行对应位置相乘,然后再相加
# np.dot(a,b) = 7

# 对于np.multiply()来说,执行的都是逐个元素相乘
print(np.multiply(c_array, c_array))
# np.multiply(c_array, c_array) = [[16  9]
#                                [ 4  1]]

print(np.multiply(c_mat, c_mat))
# np.multiply(c_mat, c_mat) = [[16  9]
#                             [ 4  1]]

参考链接:
https://blog.csdn.net/zenghaitao0128/article/details/78715140?utm_source=blogxgwz0
https://blog.csdn.net/vincentlipan/article/details/20717163

你可能感兴趣的:(python)