为什么形状是空的?

问题描述 投票:1回答:1

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

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

© www.soinside.com 2019 - 2024. All rights reserved.