unfunctypeerror与numpy.arrays之间的比较



我试图使用np.equal()实现数组之间的比较-我不能使用==,因为我想创建某种动态条件列表,将其作为np.select()的参数。

然而,数据类型似乎有问题,比较不起作用。下面是一段代码:

a = np.full((2,3), 'C', dtype='<U5')
b = np.array([['C', 'B', 'A'], ['B', 'C', 'C']], dtype='<U5')
display(a.shape, b.shape)
display(a.dtype, b.dtype)
np.equal(a, b)
>>>
(2, 3)
(2, 3)
dtype('<U5')
dtype('<U5')
---------------------------------------------------------------------------
UFuncTypeError                            Traceback (most recent call last)
Input In [17], in <cell line: 5>()
3 display(a.shape, b.shape)
4 display(a.dtype, b.dtype)
----> 5 np.equal(a, b)
UFuncTypeError: ufunc 'equal' did not contain a loop with signature matching types (<class 'numpy.dtype[str_]'>, <class 'numpy.dtype[str_]'>) -> None

是否有一个解决方案来实现我所需要的?

感谢@cromod,他对这个问题发表了一个彻底的回答,以下似乎工作得很好:

np.core.defchararray.equal(a, b)
>>>
array([[ True, False, False],
[False,  True,  True]])

我猜这与数组的元素不是数值而是字符串值有关。

相关内容

  • 没有找到相关文章

最新更新