将空数组与任何标量进行比较将得到一个空数组

2024-05-20 00:04:58 发布

您现在位置:Python中文网/ 问答频道 /正文

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?你知道吗


Tags: 函数代码in元素nprandom数组out
3条回答

我已经编辑了题目。正如pm2ring所指出的,我的normal只是一个标量。 实际上,当使用空数组与普通数组进行比较时,会导致错误

ValueError: operands could not be broadcast together with shapes (0,) (..normal.shape)

这似乎是因为numpy.maximum没有返回较大的数组,而是按元素进行比较并返回一个数组,每个数组的最大值如下:

https://docs.scipy.org/doc/numpy/reference/generated/numpy.maximum.html

因此在您的示例中,由于在empty中没有要比较的元素,因此numpy.maximum返回的正好是一个空数组。你知道吗

根据Numpy文档^{}比较两个数组,并返回一个包含元素最大值的新数组。只有当数组的大小相同,或者一个或两个参数都是标量时,它才起作用。你知道吗

对于空数组,没有什么可比较的,因此函数返回空数组。你知道吗

相关问题 更多 >