gpt4 book ai didi

python - numpy 按位运算错误

转载 作者:太空宇宙 更新时间:2023-11-03 13:42:54 25 4
gpt4 key购买 nike

numpy 版本 1.9.0

1 & (2**63)
0

np.bitwise_and(1, 2**63)
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''

np.bitwise_and(1, 2**63 + 100)
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''

np.bitwise_and(1, 2**64)
0

这是一个错误还是我遗漏了什么?

最佳答案

首先转换为uint64:

np.bitwise_and(np.uint64(1), np.uint64(2**63))

这是检查将 python 整数转换为 numpy 整数的规则的代码:

print np.array([2**30]).dtype
print np.array([2**31]).dtype
print np.array([2**63]).dtype
print np.array([2**64]).dtype

输出:

int32
int64
uint64
object

我认为 np.bitwise_and(1, 2**63) 引发错误,因为 2**63 超出了 int32 和 int64 的范围。

np.bitwise_and(1, 2**64) 之所以有效,是因为它将使用 Python 的长对象。

我们需要阅读源代码来理解细节。

关于python - numpy 按位运算错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26755352/

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