Python 为什么形状是空的?
此代码创建一个10元素数组Python 为什么形状是空的?,python,numpy,Python,Numpy,此代码创建一个10元素数组 为什么是1号?不应该是0吗 为什么形状是空的?它不应该是一维的吗 如果对不可iterable的任意对象调用np.array(),numpy将以静默方式创建一个没有维度的空数组。 然而,它的大小是1 告诉我们x.size相当于调用np.prod(x.shape)。并声明对空序列调用np.prod得到1。可能是因为1是乘法的中性元素,意思如下 假设您有一个数组[4,2,3]。它的元素产品是24。现在将其拆分为两个数组:[4]和[2,3]。您有一个很好的属性:np.prod
如果对不可iterable的任意对象调用
np.array()
,numpy将以静默方式创建一个没有维度的空数组。
然而,它的大小是1
告诉我们x.size相当于调用np.prod(x.shape)
。并声明对空序列调用np.prod得到1。可能是因为1是乘法的中性元素,意思如下
假设您有一个数组
[4,2,3]
。它的元素产品是24
。现在将其拆分为两个数组:[4]
和[2,3]
。您有一个很好的属性:np.prod([4,2,3])==np.prod([4])*np.prod([2,3])
。但如果其中一个数组为空,则希望此属性仍然保持:np.prod([4,2,3])==np.prod([])*np.prod([4,2,3])
否这将生成一个元素数组arange(10)
和one(10)
组成10个元素数组。如果是10个元素数组,为什么它的大小是0?@hpaulj是单元素数组的形状空()?numpy
数组可以是0d、1d、2d,最多32个。形状是一个元组,每个维度有一个值(10,)
是一个1元素元组,()
是一个0元素元组np.array(10)
是0d数组,np.array([10])
是1d,np.array([[10]])
是2d。“静默创建空数组”,np.array(10)——这是创建空数组还是单元素数组?如果它是一个单元素数组,那么它必须有一个维度?或者正如@hapaulj所说,这是一个0维数组。@marlon不,这是一个空数组。它没有任何元素。如果您尝试调用s[0],则会引发错误。@marlon Yes。尝试调用np.array(np.array)。或np.array(int)。或者np.array(“meow”)。它们都与数组不同,因此给出相同的结果——一个没有元素和空维度的数组。np.array(10)——这是一个“没有元素”的数组吗?如果为真,创建此阵列的目的是什么?@marlon没有“目的”,只有“保证行为”。医生告诉我们如果你经过那里会发生什么,而不告诉其他任何事情。因此,行为可以是任意的。例如,它可能抛出错误,但出于某种原因保持沉默。
In [14]: s = np.array(10)
In [15]: s
Out[15]: array(10)
In [16]: s.size
Out[16]: 1
In [17]: s.shape
Out[17]: ()