Python 为什么形状是空的?

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

此代码创建一个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([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]: ()