>> import numpy -6ren">
gpt4 book ai didi

python - numpy "TypeError: ufunc ' bitwise_and'输入类型不支持“使用动态创建的 bool 掩码时

转载 作者:太空宇宙 更新时间:2023-11-03 12:53:55 26 4
gpt4 key购买 nike

在 numpy 中,如果我有一个 float 数组,动态创建一个 bool 掩码,表示该数组等于特定值的位置,然后对 bool 数组执行按位与操作,我得到一个错误:

>>> import numpy as np
>>> a = np.array([1.0, 2.0, 3.0])
>>> a == 2.0 & b

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: ufunc 'bitwise_and' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe'

如果我将比较结果保存到一个变量并执行按位与,它会起作用:

>>> c = a == 2.0
>>> c & b
array([False, True, False], dtype=bool)

创建的对象在每种情况下看起来都是一样的:

>>> type(a == 2.0)
<type 'numpy.ndarray'>
>>> (a == 2.0).dtype
dtype('bool')
>>> type(c)
<type 'numpy.ndarray'>
>>> c.dtype
dtype('bool')

为什么不同?

最佳答案

& 有更高的 precedence==,所以表达式

a == 2.0 & b

相同
a == (2.0 & b)

您收到错误是因为未为浮点标量和 bool 数组定义按位 and

添加括号以获得您所期望的:

(a == 2.0) & b

关于python - numpy "TypeError: ufunc ' bitwise_and'输入类型不支持“使用动态创建的 bool 掩码时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50656307/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com