gpt4 book ai didi

python-3.x - numpy packbits 打包到 uint16 数组

转载 作者:行者123 更新时间:2023-12-04 00:31:11 28 4
gpt4 key购买 nike

我有一个 3D numpy 位数组,我需要沿第三个轴打包它们。这正是 numpy.packbits 所做的。但不幸的是它只打包到 uint8,但我需要更多数据,是否有类似的方法将其打包到 uint16 或 uint32?

最佳答案

根据您机器的字节顺序,它要么是简单的 View 转换问题,要么是字节交换然后 View 转换的问题:

>>> a = np.random.randint(0, 2, (4, 16))
>>> a
array([[1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0],
[0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1],
[0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1],
[1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1]])
>>> np.packbits(a.reshape(-1, 2, 8)[:, ::-1]).view(np.uint16)
array([53226, 23751, 25853, 64619], dtype=uint16)

# check:
>>> [bin(x + (1<<16))[-16:] for x in _]
['1100111111101010', '0101110011000111', '0110010011111101', '1111110001101011']

你可能最终不得不 reshape 。

关于python-3.x - numpy packbits 打包到 uint16 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49791312/

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