jax.numpy.packbits#

jax.numpy.packbits(a, axis=None, bitorder='big')[源代码]#

将位数组打包成 uint8 数组。

JAX 对 numpy.packbits() 的实现。

参数:
  • a (ArrayLike) – 要打包的 N 维位数组。

  • axis (int | None) – 可选的打包位的轴。如果未指定,则 a 将被展平。

  • bitorder (str) – "big" (默认) 或 "little": 指定位顺序是大端还是小端。

返回:

打包值的 uint8 数组。

返回类型:

Array

另请参阅

示例

在一维中打包位

>>> bits = jnp.array([0, 0, 0, 0, 0, 1, 1, 1])
>>> jnp.packbits(bits)
Array([7], dtype=uint8)
>>> 0b00000111  # equivalent bit-wise representation:
7

可选地指定小端约定

>>> jnp.packbits(bits, bitorder="little")
Array([224], dtype=uint8)
>>> 0b11100000  # equivalent bit-wise representation
224

如果位数不是 8 的倍数,则会用零进行右填充。

>>> jnp.packbits(jnp.array([1, 0, 1]))
Array([160], dtype=uint8)
>>> jnp.packbits(jnp.array([1, 0, 1, 0, 0, 0, 0, 0]))
Array([160], dtype=uint8)

对于多维输入,可以沿着指定的轴打包位。

>>> a = jnp.array([[1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0],
...                [0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1]])
>>> vals = jnp.packbits(a, axis=1)
>>> vals
Array([[212, 150],
       [ 69, 207]], dtype=uint8)

packbits 的逆操作由 unpackbits() 提供。

>>> jnp.unpackbits(vals, axis=1)
Array([[1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0],
       [0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1]], dtype=uint8)