В конкретном случае, указанном в вашем вопросе, вы можете изменить форму массива, а затем использовать argmin
:
>>> import numpy as np
>>> a = np.array([[[1, 9, 4, 0, 7],
... [6, 3, 1, 6, 8],
... [7, 8, 2, 0, 2],
... [8, 6, 1, 6, 5]],
...
... [[8, 7, 0, 6, 9],
... [7, 2, 6, 4, 5],
... [3, 4, 9, 2, 9],
... [1, 4, 8, 0, 7]],
...
... [[1, 4, 6, 6, 2],
... [9, 9, 5, 6, 7],
... [6, 2, 8, 9, 9],
... [3, 9, 8, 5, 4]]])
>>> a.reshape(-1, a.shape[2]).min(axis=0)
array([1, 2, 0, 0, 2])
>>> a.reshape(-1, a.shape[2]).argmin(axis=0)
array([0, 5, 4, 0, 2])
>>>
. shape[2]
исходит из того факта, что это измерение (в данном случаевнутренний размер (или строки), где вы не хотите рассчитать минимум по: вы вычисляете минимум по первым двум измерениям.
Вам также нужен срезчисло: в основном только второй индекс ваших элементов.Это легко, так как этот является последовательным и просто:
slices = np.arange(a.shape[2])