Numpy, применение функции по нескольким осямPython

Программы на Python
Ответить
Anonymous
 Numpy, применение функции по нескольким осям

Сообщение Anonymous »

Мне трудно понять, как применить функцию к нескольким измерениям входного массива.
Например, я хочу просуммировать элементы по осям 1 и 2. Я хочу сделайте это, выполнив специальную функцию (а не встроенную функцию .sum()), чтобы понять, что происходит. В качестве рабочего примера

Код: Выделить всё

def f(row, axis = 0):
return np.sum(row, axis)

b = np.random.randint(6, size = (100, 101, 102))
c = np.apply_over_axes(f, b, axes = [1,2])
c.shape

При запуске я получаю выходной размер (100, 1, 1). Вместо этого запустив b.sum(axis=(1,2)), я получаю выходной размер (100) (это то, что я хочу). Вот я тоже не понимаю, зачем мне добавлять аргумент оси в функцию f, если я его не добавлю, то будет ошибка.
Далее я бы хотелось бы понять, как применить пользовательскую функцию к нескольким осям. Например, получение второго по величине элемента. Я не верю, что возможно применить функцию рекурсивно по нескольким осям. Как мне действовать?
Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/792 ... veral-axes
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»