当计算的输入是具有 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 的值后返回到 …
[::n]numpy中的索引选项提供了一种非常有用的方式来索引列表中的第n个项目。但是,是否可以使用此功能提取多个值,例如,每隔两个值对?
例如:
a = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
Run Code Online (Sandbox Code Playgroud)
我想提取其他每对值,即我想返回
a[0, 1, 4, 5, 8, 9,]
Run Code Online (Sandbox Code Playgroud)
当然可以使用循环或其他方式来::建立索引,但是我想知道是否有一种更快的方法可以在numpy中使用-style索引,还可以指定模式的宽度以进行每n次迭代。
谢谢