相关疑难解决方法(0)

使用 int dtype 进行 numpy 数组计算时出错(在需要时无法自动将 dtype 转换为 64 位)

当计算的输入是具有 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 的值后返回到 …

python arrays integer numpy numpy-ndarray

5
推荐指数
1
解决办法
398
查看次数

标签 统计

arrays ×1

integer ×1

numpy ×1

numpy-ndarray ×1

python ×1