当计算的输入是具有 32 位整数数据类型的 numpy 数组时,我遇到了 numpy 计算不正确的问题,但输出包含需要 64 位表示的较大数字。
这是一个最小的工作示例:
arr = np.ones(5, dtype=int) * (2**24 + 300) # arr.dtype defaults to 'int32'
# Following comment from @hpaulj I changed the first line, which was originally:
# arr = np.zeros(5, dtype=int)
# arr[:] = 2**24 + 300
single_value_calc = 2**8 * (2**24 + 300)
numpy_calc = 2**8 * arr
print(single_value_calc)
print(numpy_calc[0])
# RESULTS
4295044096
76800
Run Code Online (Sandbox Code Playgroud)
所需的输出是 numpy 数组包含正确的值 4295044096,这需要 64 位来表示它。即我希望 numpy 数组在输出需要时自动从 int32 向上转换为 int64,而不是保持 32 位输出并在超过 2^32 的值后返回到 …