numpy中一维数组的小知识

最近在学习numpy模块中的一维数组时,发现如下矛盾:

下面是我做的小实验:

import numpy as np
# 实验一
A = np.array([[1,2],[3,4],[4,5]])  # 这个是3*2的矩阵
print(A)
print(A.shape)

B = np.array([1,2])                # 这个矩阵式什么形状呢,根据矩阵乘法规则,B应该式2*1的矩阵
print(B)
print(B.shape)

C = np.dot(A,B)                    # B的形状由它的乘积决定
print(C)

# 实验二
X = np.array([1,2])                        # 所以,X是1*2的矩阵
print(X)
print(X.shape)

W = np.array([[1,2,3],[4,5,6]])             # W矩阵的形状式唯一确定的2*3
print(W)
print(W.shape)

M = np.dot(X,W)                             # 因为X矩阵的形状由该代码所决定
print(M)

# 通过上面的实验很容易看出,np.array([1,2])一会是行向量,一会是列向量

# 下面我要验证的是当一维向量在左边的时候是行向量,在右边的时候是列向量

row = np.array([1,2,3])
column = np.array([1,2,3])
muply = np.dot(row,column)
print(muply)

# 下面我要验证的是到底右边是不是永远都是列向量
row1 = np.array([1,2,3])
column1 = np.array([1,2,3])
column2 = column1.reshape(-1,1)
print(column2.shape)
print(column2)
H = np.dot(column2,row1)
print(H)

结论:当一维数组在乘号的左边时是行向量,反之,是列向量。

猜你喜欢

转载自www.cnblogs.com/mysterygust/p/13194508.html
今日推荐