numpy:函数参数中的“size”与“shape”?

时间:2017-06-28 14:11:48

标签: python numpy

我注意到一些numpy操作采用名为shape的参数,例如np.zeros,而其他一些采用名为size的参数,例如np.random.randint。对我来说,这些论点具有相同的功能,并且它们具有不同的名称这一事实有点令人困惑。实际上,size似乎有点偏,因为它确实指定了输出的.shape

是否有理由使用不同的名称,即使它们最终都等于输出的.shape,它们是否会传达不同的含义?

2 个答案:

答案 0 :(得分:4)

Shape与N维数组的尺寸的大小有关。

关于数组的

Size与数组中包含的元素的数量(或计数)相关(有时,在顶部维度数组 - 用作长度时。)

例如,让a成为矩阵

1  2  3  4
5  6  7  8
9 10 11 12

a的形状为(3, 4)a的大小为12,a[1]的大小为4.

答案 1 :(得分:1)

因为你正在使用一个被称为C数组的numpy数组,size指的是你的数组有多大。此外,如果您可以通过np.zeros(10)np.zeros((10))。虽然区别很微妙,但size通过这种方式会创建一个一维数组。你可以给size=(n1, n2, ..., nn)创建一个nD数组。

但是,因为python用户想要多维数组,array.reshape允许你从1D到nD数组。因此,当您调用shape时,您将获得数组的N维形状,因此您可以准确地看到数组的外观。

实质上,size等于shape元素的乘积。

编辑:名称的不同可归结为两部分:首先,您可以使用大小初始化数组。但是,你不知道它的形状。所以size仅适用于元素总数。其次,如何开发numpy,不同的人在代码的不同部分工作,根据他们对代码的个人愿景,给出大致相同元素的不同名称。