Python numpy:形状向量(5,1)和(5,)有什么区别?

Python numpy:形状向量(5,1)和(5,)有什么区别?,python,numpy,Python,Numpy,我发现为了使用点积,我经常不得不将(5,)重塑成(5,1)。有什么我不能用一个点积和一个向量(5,)呢?这是因为当你用arr=np.ones((5))创建一个数组时,它会得到一个包含5个元素的1D数组,另一方面当你用arr=np.ones((5,1))创建一个包含5行1列的2D数组。下面的示例会让您更清楚: >>> import numpy as np >>> a = np.ones((5, 1)) >>> a array([[ 1.],

我发现为了使用点积,我经常不得不将(5,)重塑成(5,1)。有什么我不能用一个点积和一个向量(5,)呢?

这是因为当你用
arr=np.ones((5))
创建一个数组时,它会得到一个包含5个元素的1D数组,另一方面当你用
arr=np.ones((5,1))
创建一个包含5行1列的2D数组。下面的示例会让您更清楚:

>>> import numpy as np 
>>> a = np.ones((5, 1))
>>> a
array([[ 1.],
       [ 1.],
       [ 1.],
       [ 1.],
       [ 1.]])
>>> a = np.ones((5))
>>> a
array([ 1.,  1.,  1.,  1.,  1.])

要使用点积,需要矩阵(用2D数组表示)。维度为(5,)的数组是由5项组成的平面数组(1D数组),其中as(5,1)是包含1列和5行的矩阵

>>> import numpy as np
>>> np.zeros((5,))
array([ 0.,  0.,  0.,  0.,  0.])    # single flat array
>>> np.zeros((1,5))
array([[ 0.,  0.,  0.,  0.,  0.]])  # array with-in array
>>> np.zeros((5,1))
array([[ 0.],
       [ 0.],
       [ 0.],
       [ 0.],
       [ 0.]])
>>>
“我不能用一个点积和一个向量的形状(5,)”-你可以这样做