我注意到一些numpy操作采用名为shape的参数,例如np.zeros,而另一些则采用名为size的参数,例如np.random.randint。对我来说,这些参数具有相同的功能,而它们具有不同名称的事实有点令人困惑。实际上,size看起来有点不对劲,因为它实际上指定了输出的.shape。有没有理由使用不同的名称,它们是否传达了不同的含义,即使它们最终都等于输出的.shape?
shape
np.zeros
size
np.random.randint
.shape
1cklez4t1#
Shape与N维数组的dimensions的大小有关。Size关于数组,与数组中包含的元素的数量(或计数)有关(有时,在数组的顶部维度-当用作长度时)。例如,设a为矩阵a的形状是(3, 4),a的大小是12,a[1]的大小是4。
Shape
Size
a
(3, 4)
a[1]
r6vfmomb2#
因为你正在使用一个numpy数组,它被看作是一个C数组,size指的是你的数组有多大。此外,如果你可以传递np.zeros(10)或np.zeros((10))。虽然差别很小,但以这种方式传递的size将创建一个1D数组。您可以给予size=(n1, n2, ..., nn),这将创建一个nD数组。但是,由于python用户需要多维数组,array.reshape允许从1D数组到nD数组。所以,当你调用shape时,你会得到数组的N维形状,所以你可以确切地看到数组的样子。本质上,size等于shape的元素的乘积。编辑:名称的差异可以归因于两个部分:首先,你可以用一个大小初始化你的数组。你不知道它的形状。所以size只是元素的总数。其次,numpy是如何开发的,不同的人在代码的不同部分工作,大致相同的元素有不同的名称,这取决于他们对代码的个人看法。
np.zeros(10)
np.zeros((10))
size=(n1, n2, ..., nn)
array.reshape
z9gpfhce3#
随机排列:
[[-2. -1. 0. 1. 2.] [-2. -1. 0. 1. 2.] [-2. -1. 0. 1. 2.]]
区别在于:
print(your_np_arr.shape) # (3, 5) print(your_np_arr.size) # 15
3条答案
按热度按时间1cklez4t1#
Shape
与N维数组的dimensions的大小有关。Size
关于数组,与数组中包含的元素的数量(或计数)有关(有时,在数组的顶部维度-当用作长度时)。例如,设
a
为矩阵a
的形状是(3, 4)
,a
的大小是12,a[1]
的大小是4。r6vfmomb2#
因为你正在使用一个numpy数组,它被看作是一个C数组,
size
指的是你的数组有多大。此外,如果你可以传递np.zeros(10)
或np.zeros((10))
。虽然差别很小,但以这种方式传递的size
将创建一个1D数组。您可以给予size=(n1, n2, ..., nn)
,这将创建一个nD数组。但是,由于python用户需要多维数组,
array.reshape
允许从1D数组到nD数组。所以,当你调用shape
时,你会得到数组的N维形状,所以你可以确切地看到数组的样子。本质上,
size
等于shape
的元素的乘积。编辑:名称的差异可以归因于两个部分:首先,你可以用一个大小初始化你的数组。你不知道它的形状。所以
size
只是元素的总数。其次,numpy是如何开发的,不同的人在代码的不同部分工作,大致相同的元素有不同的名称,这取决于他们对代码的个人看法。z9gpfhce3#
随机排列:
区别在于: