为什么形状为空?

时间:2019-02-02 19:52:13

标签: python numpy

此代码创建一个包含10个元素的数组。

  1. 为什么是尺寸1?应该不是0吗?
  2. 为什么形状空?应该不是一维的吗?
    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]: ()

1 个答案:

答案 0 :(得分:2)

如果任意物体上的一个呼叫np.array(),是不是可迭代,numpy的静默创建一个没有尺寸空数组。 但是,其大小为1。

Docs of numpy size告诉我们x.size等效于调用np.prod(x.shape)。和docs for np.prod状态的空序列调用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])