【问题标题】:numpy: What is the difference between a vector of shape (5,1) and (5,)? [duplicate]numpy:形状(5,1)和(5,)的向量有什么区别? [复制]
【发布时间】:2016-11-13 00:07:48
【问题描述】:

我发现我经常需要将 (5,) 重塑为 (5,1) 才能使用点积。什么不能只使用形状为 (5,) 的向量的点积?

【问题讨论】:

标签: python numpy


【解决方案1】:

要使用点积,您需要矩阵(用二维数组表示)。维数为 (5,) 的数组是 5 个元素的平面数组(一维数组),其中 (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.]])
>>>

【讨论】:

    【解决方案2】:

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

    >>> 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.])
    

    【讨论】:

      猜你喜欢
      • 2013-02-23
      • 1970-01-01
      • 1970-01-01
      • 2015-05-04
      • 2020-04-25
      • 2020-07-29
      • 2016-06-13
      • 2017-08-10
      相关资源
      最近更新 更多