为什么形状是空的?

mar*_*lon 4 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]: ()
Run Code Online (Sandbox Code Playgroud)

soo*_*bus 5

如果调用np.array()不可迭代的任意对象,numpy 会默默地创建一个没有维度的空数组。然而,它的大小是1。

numpy size 的文档告诉我们 x.size 相当于调用np.prod(x.shape). 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])