此代码创建一个10元素数组。
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]: ()
如果在任何不可迭代的对象上调用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])
。