Advertisements
I have an array arr = [[[1, 2], [3, 4]], [5, 6]]
.
I am looking for a function f that returns me the indexes of the elements also in the nested array given only arr
as input.
For example, function(arr, 2) -> (0, 0, 1)
Has some library implemented it?
Of course it’s not a problem if the array is a numpy array.
>Solution :
For this you dont necessarely need a special library, you can use the numpy
where function, like this:
import numpy as np
def find_indices(arr, x):
indices = np.where(np.array(arr) == x)
return tuple(indices[0])
# example usage
arr = [[[1, 2], [3, 4]], [5, 6]]
print(find_indices(arr, 2)) # output: (0, 0, 1)
edit: my code seem to fail on some case with the error ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 2 dimensions. The detected shape was (2, 2) + inhomogeneous part.
here is a version that work without numpy
def find_indices(arr, value):
for i, sublist in enumerate(arr):
for j, subsublist in enumerate(sublist):
for k, item in enumerate(subsublist):
if item == value:
return i, j, k
return None
arr = [[[1, 2], [3, 4]], [5, 6]]
print(find_indices(arr, 2)) # Output: (0, 0, 1)