2016-02-28 5 views
0

Мне нужно изменить минимальные/максимальные значения 4D-массива вдоль определенной оси. Координаты min/max вдоль определенной оси перенастроены на armax, поэтому для 4D-массива a имеется трехмерный массив.Индексы минимальных/максимальных элементов в массиве 4D

Теперь из этого трехмерного массива мне нужно восстановить полный индекс значений min/max. Я понимаю, что наиболее эффективный способ сделать это сочетание результатов mgrid и argmin, используя что-то вроде (для мин вдоль 1-ой оси):

mg = np.mgrid[0:Array.shape[0], 0:Array.shape[1], 0:Array.shape[2], 0:Array.shape[3]] 

Array[mg[0], np.argmin(Array, axis=1), mg[2], mg[3]] = np.min(Array) 

однако, это, кажется, не работать правильно.

Может кто-нибудь, пожалуйста, сообщите, как исправить код выше, чтобы заменить минимальные значения массива вдоль первой оси с абсолютным минимумом массива?

В качестве альтернативы, если это не самый быстрый способ сделать это, какое оптимальное решение?

+0

Сделать эту строку более легкой для чтения. Это пугает потенциальную помощь. – hpaulj

ответ

0

Try индексации с:

Array[:, np.argmin(Array, axis=1), :, :] = .... 

Я думаю, что вы пытаетесь установить все значения одной «плоскости» до минимального значения. : - это slice, указав все индексы вдоль этой оси.

Я на самом деле не пытался запустить ваш пример, но я не думаю, что для этого вам нужно создать mg.

Смежные вопросы