import numpy as np
a = np.random.randn(5)
print(a)
[ 0.71938184 -0.67913267 0.68261199 0.28344646 0.79999571]
生成5个随机高斯变量储存在数组a中
print(a.shape)
(5,)
显示a的形状,为秩为1的数组,既不是行向量也不是列向量
print(a.T)
[ 0.71938184 -0.67913267 0.68261199 0.28344646 0.79999571]
显示a的转置,与a相同
print(np.dot(a,a.T)) #计算a和a的转置的积
2.165025590653722
a = np.random.randn(5,1)#应该使用这种方式来生成5*1的矩阵
print(a)
[[ 1.41506567]
[ 2.0286434 ]
[ 1.26772785]
[-1.65091443]
[-0.63833777]]
print(a.T)#此时,a的转置是1*5的列向量
[[-0.05676626 -1.3514814 0.06185545 0.14442963 -0.20376781]]
print(np.dot(a,a.T)) #计算a和a的转置的积,此时得到的结果为5*5的矩阵
[[ 0.00322241 0.07671854 -0.0035113 -0.00819873 0.01156714]
[ 0.07671854 1.82650198 -0.08359649 -0.19519396 0.27538841]
[-0.0035113 -0.08359649 0.0038261 0.00893376 -0.01260415]
[-0.00819873 -0.19519396 0.00893376 0.02085992 -0.02943011]
[ 0.01156714 0.27538841 -0.01260415 -0.02943011 0.04152132]]
所以,每次创建数组时,应该将其定义为列向量或者行向量,而不是一个数组
a = np.random.randn(5,1)
a.shape = (5,1)
#应该使用这种方式来生成5*1的矩阵
a = np.random.randn(1,5)
a.shape = (1,5)
#应该使用这种方式来生成1*5的矩阵
assert(a.shape == (5,1))
#assert()声明用来确保这是一个向量
a = a.reshape((5.1))
#将a转换成5*1数组
原文链接:https://blog.csdn.net/weixin_49813799/article/details/112413945