小编典典

numpy.array 形状 (R, 1) 和 (R,) 之间的区别

all

其中numpy,一些操作恢复正常,(R, 1)但一些操作返回(R,)。由于需要显式,这将使矩阵乘法更加乏味reshape。例如,给定一个矩阵M,如果我们想做numpy.dot(M[:,0], numpy.ones((1, R)))where Ris the number of rows
(当然,同样的问题也会出现在列方面)。我们会得到matrices are not aligned错误,因为M[:,0]is in
shape(R,)numpy.ones((1, R))is in shape (1, R)

所以我的问题是:

  1. (R, 1)形状和形状有什么区别(R,)。我从字面上知道它是数字列表和列表列表,其中所有列表仅包含一个数字。只是想知道为什么不设计numpy成有利于形状(R, 1)而不是(R,)更容易的矩阵乘法。

  2. 上面的例子有更好的方法吗?没有像这样明确地重塑:numpy.dot(M[:,0].reshape(R, 1), numpy.ones((1, R)))


阅读 93

收藏
2022-03-24

共1个答案

小编典典

一、NumPy中形状的含义

你写,“我知道它是数字列表和列表列表,其中所有列表只包含一个数字”但这是一种无益的思考方式。

考虑 NumPy 数组的最佳方式是它们由两部分组成,一个是原始元素块的 数据缓冲区 ,另一个是描述如何解释数据缓冲区的 视图。

例如,如果我们创建一个包含 12 个整数的数组:

>>> a = numpy.arange(12)
>>> a
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])

然后a由一个数据缓冲区组成,安排如下:

2022-03-24