Pack the elements of a binary-valued Numpy array into bits in a uint8 array over axis 1


To pack the elements of a binary-valued array into bits in a uint8 array, use the numpy.packbits() method in Python Numpy. The result is padded to full bytes by inserting zero bits at the end. The axis is set using the axis parameter. The axis is the dimension over which bit-packing is done. We have set axis 1.

The axis is the dimension over which bit-packing is done. None implies packing the flattened array. The bitorder is the order of the input bits. ‘big’ will mimic bin(val), [0, 0, 0, 0, 0, 0, 1, 1] ⇒ 3 = 0b00000011, 'little' will reverse the order so [1, 1, 0, 0, 0, 0, 0, 0] ⇒ 3. Defaults to 'big'.

The function packbits() returns the array of type uint8 whose elements represent bits corresponding to the logical (0 or nonzero) value of the input elements. The shape of packed has the same number of dimensions as the input.

Steps

At first, import the required library −

import numpy as np

Create a 3d array −

arr = np.array([[ [1,0,1], [0,1,0]],[ [1,1,0], [0,0,1]],[ [1, 1, 0], [0, 0, 1] ]])

Displaying our array −

print("Array...
",arr)

Get the datatype −

print("
Array datatype...
",arr.dtype)

Get the dimensions of the Array −

print("
Array Dimensions...
",arr.ndim)

Get the shape of the Array −

print("
Our Array Shape...
",arr.shape)

Get the number of elements of the Array −

print("
Elements in the Array...
",arr.size)

To pack the elements of a binary-valued array into bits in a uint8 array, use the numpy.packbits() method. The axis is set using the axis parameter. The axis is the dimension over which bit-packing is done −

res = np.packbits(arr, axis = 1)
print("
Result...
",res)

Example

import numpy as np

# Create a 3d array
arr = np.array([[ [1,0,1], [0,1,0]], [ [1,1,0], [0,0,1]], [ [1, 1, 0], [0, 0, 1] ]])
# Displaying our array
print("Array...
",arr) # Get the datatype print("
Array datatype...
",arr.dtype) # Get the dimensions of the Array print("
Array Dimensions...
",arr.ndim) # Get the shape of the Array print("
Our Array Shape...
",arr.shape) # Get the number of elements of the Array print("
Elements in the Array...
",arr.size) # To pack the elements of a binary-valued array into bits in a uint8 array, use the numpy.packbits() method in Python Numpy # The result is padded to full bytes by inserting zero bits at the end # The axis is set using the axis parameter # The axis is the dimension over which bit-packing is done. res = np.packbits(arr, axis = 1) print("
Result...
",res)

Output

Array...
[[[1 0 1]
[0 1 0]]

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

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

Array datatype...
int64

Array Dimensions...
3

Our Array Shape...
(3, 2, 3)

Elements in the Array...
18

Result...
[[[128 64 128]]

[[128 128 64]]

[[128 128 64]]]

Updated on: 16-Feb-2022

72 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements