Untitled

 avatar
unknown
plain_text
2 years ago
2.1 kB
3
Indexable
import numpy as np

def map_value_to_2D_binary(array, length):
    result = np.zeros((len(array), length))
    valid_indices = (array < length) & (array >= 0)
    result[np.arange(len(array))[valid_indices], array[valid_indices]] = 1
    return result

if __name__ == '__main__':

    # Initial array
    array = np.array([2, 3, 7, 5])
    length = 10
    expected = np.array(
    [
      [0, 0, 1, 0, 0, 0, 0, 0, 0, 0],
      [0, 0, 0, 1, 0, 0, 0, 0, 0, 0],
      [0, 0, 0, 0, 0, 0, 0, 1, 0, 0],
      [0, 0, 0, 0, 0, 1, 0, 0, 0, 0]
    ])
    print(np.array_equal(map_value_to_2D_binary(array, length), expected))

    # Out of range and negative values
    array = np.array([-2, 14, 2, 3, 2, 7, 5, 7])
    length = 10
    expected = np.array(
    [
      [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, 0, 0, 1, 0, 0, 0, 0, 0, 0],
      [0, 0, 1, 0, 0, 0, 0, 0, 0, 0],
      [0, 0, 0, 0, 0, 0, 0, 1, 0, 0],
      [0, 0, 0, 0, 0, 1, 0, 0, 0, 0],
      [0, 0, 0, 0, 0, 0, 0, 1, 0, 0]
    ])
    print(np.array_equal(map_value_to_2D_binary(array, length), expected))

    # All values out of range
    array = np.array([10, 11, 12, 13])
    length = 10
    expected = np.array(
    [
      [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
      [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
      [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
      [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    ])
    print(np.array_equal(map_value_to_2D_binary(array, length), expected))

    # All values are the same
    array = np.array([5, 5, 5, 5])
    length = 10
    expected = np.array(
    [
      [0, 0, 0, 0, 0, 1, 0, 0, 0, 0],
      [0, 0, 0, 0, 0, 1, 0, 0, 0, 0],
      [0, 0, 0, 0, 0, 1, 0, 0, 0, 0],
      [0, 0, 0, 0, 0, 1, 0, 0, 0, 0]
    ])
    print(np.array_equal(map_value_to_2D_binary(array, length), expected))

    # Array contains only one value
    array = np.array([5])
    length = 10
    expected = np.array(
    [
      [0, 0, 0, 0, 0, 1, 0, 0, 0, 0]
    ])
    print(np.array_equal(map_value_to_2D_binary(array, length), expected))
Editor is loading...