Untitled
unknown
plain_text
3 years ago
2.1 kB
6
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...