У меня есть два трехмерных массива a и b и вы хотите найти 2D-подрамник b с элементами, где a имел минимум вдоль третьей оси, то естьНайти массив, соответствующий минимальным значениям вдоль оси в другом массиве
a=n.random.rand(20).reshape((5,2,2))
b=n.arange(20).reshape((5,2,2))
c=n.argmin(a,2) #indices with minimal value of a
d=n.zeros_like(c) #the array I want
for i in range(5):
for j in range(2):
d[i,j] = b[i,j,c[i,j]]
Есть ли способ получить эти значения без двойной петли?
Я знаю этот ответ: replace min value to another in numpy array , но если я хочу, чтобы это работало для моих 3D массивов я должен был бы сделать много операций перестройки - и мне интересно, если есть что-то проще.
Переформуйте их на (5,2), и результат должен выглядеть как 'mgrid' версия из' ogrid' предложил другой ответ. – hpaulj
@hpaulj Да, к сожалению, я не был знаком с этой функцией. – Kasramvd