我需要一种方法将2000万个32位和64位整数转换为相应的位数组(因此这必须具有内存/时间效率)。在SO的另一个question/answer的建议下,我试图通过使用numpy.unpackbits
来做到这一点。虽然用这种方法尝试我遇到了意想不到的结果:使用numpy将int转换为位数组
np.unpackbits(np.array([1], dtype=np.uint64).view(np.uint8))
生产:
array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=uint8)
我期望1
元素成为最后一个,但不是在中间。所以我显然错过了保留字节顺序的东西。我错过了什么?
我没有看到文件证明这一点,但我认为,当我创建一个类型的Int64的数组,用更小的数据填充它,每个元素都会被投入一长串。即等同于C语言,它应该使用'0'填充更高位。 –
2000万!但我希望不要编辑O_o – linusg
[This answer](http://stackoverflow.com/a/18296281/8747)建议你阅读[this link](http://docs.scipy.org/doc/numpy/user /basics.byteswapping.html)。 –