我注意到一些numpy操作采用名为shape
的参数,例如np.zeros
,而其他一些采用名为size
的参数,例如np.random.randint
。对我来说,这些论点具有相同的功能,并且它们具有不同的名称这一事实有点令人困惑。实际上,size
似乎有点偏,因为它确实指定了输出的.shape
。
是否有理由使用不同的名称,即使它们最终都等于输出的.shape
,它们是否会传达不同的含义?
答案 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,不同的人在代码的不同部分工作,根据他们对代码的个人愿景,给出大致相同元素的不同名称。