In [2]: a = np.random.random(4)
In [3]: a
Out[3]: array([0.87932117, 0.77583433, 0.82855167, 0.52718255])
In [4]: empty = a[4:]
In [5]: empty
Out[5]: array([], dtype=float64)
In [9]: normal = a[0]
In [10]: normal
Out[10]: 0.879321173826548
In [11]: bigger = np.maximum(empty, normal)
In [12]: bigger
Out[12]: array([], dtype=float64)
我的代码如上所示。我得到一个空数组empty
和一个普通数组normal
,然后使用np.maximum()
函数查找数组元素bigger
的按元素最大值。
我很好奇我得到的结果是empty
吗?
答案 0 :(得分:3)
根据Numpy文档numpy.maximum
比较两个数组,并返回一个新的数组,其中包含按元素的最大值。仅当数组具有相同大小或两个或两个参数均为标量时,该方法才有效。
对于一个空数组,您没有什么可比较的,因此该函数返回一个空数组。
答案 1 :(得分:0)
这似乎是因为numpy.maximum
不会返回较大的数组,而是按元素进行比较并返回每个数组的最大值的数组,请参见此处:
https://docs.scipy.org/doc/numpy/reference/generated/numpy.maximum.html
因此,在您的示例中,由于empty
中没有要比较的元素,numpy.maximum
准确地返回了一个空数组。
答案 2 :(得分:0)
我已编辑问题标题。正如PM 2Ring指出的那样,我的normal
只是一个标量。
实际上,当使用空数组与普通数组进行比较时,会导致错误:
ValueError: operands could not be broadcast together with shapes (0,) (..normal.shape)