gpt4 book ai didi

python - 如何提取较大数字 Numpy 数据类型的位

转载 作者:太空狗 更新时间:2023-10-29 18:00:19 26 4
gpt4 key购买 nike

Numpy 有一个库函数,np.unpackbits,它会将一个uint8 解包成一个长度为 8 的位向量。有没有相应快速的方法来解包更大的数字类型?例如。 uint16uint32。我正在研究一个涉及数字之间频繁转换的问题,用于数组索引及其位向量表示,而瓶颈是我们的打包和解包函数。

最佳答案

您可以使用 viewunpackbits 执行此操作

输入:

unpackbits(arange(2, dtype=uint16).view(uint8))

输出:

[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0]

对于 a = arange(int(1e6), dtype=uint16) 这在我的机器上非常快,大约 7 毫秒

%%timeit
unpackbits(a.view(uint8))

100 loops, best of 3: 7.03 ms per loop

至于字节顺序,你得看看http://docs.scipy.org/doc/numpy/user/basics.byteswapping.html并根据您的需要应用建议。

关于python - 如何提取较大数字 Numpy 数据类型的位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18296035/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com