首页 > 解决方案 > 位移时保留标量 dtype

问题描述

我有一个 32 位 uint 标量,如何在不向上转换 dtype 的情况下对其进行位移?

x = np.uint32(123456789)
x << 11 

int64 输出:

252839503872

预期输出:

3731400704

可以通过做得到我想要的输出np.uint32((x << 11) & 0xFFFFFFFF),但是对于这样一个简单的操作来说,语法感觉是多余的。

标签: numpy

解决方案


两个参数都必须具有所需的 dtype:

In [80]: np.left_shift(x,np.uint32(11))
Out[80]: 3731400704
In [81]: x<<np.uint32(11)
Out[81]: 3731400704

x<<11是一个简单的操作,但dtypenp.array(11)控制权。


推荐阅读