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)