Мы можем вычислить поэлементно максимум 3 массива numpy:
import numpy as np
A = np.arange(20).reshape((4, 5)) # any 4x5 array
B = np.maximum(A, A+7, A+2) # working
Но почему np.maximum
не принимает несколько массивов из «распаковки»?
L = [np.roll(A, k, axis=0) for k in range(4)] # 4 arrays: A shifted with different k
np.maximum(*L)
Ошибка:
ValueError: неверное количество аргументов
В конце концов, L
— это список Python объектов массива Numpy, поэтому *L
должен распаковать его для вызова функции np.maximum
. Почему это не работает?
PS: я также пробовал с L = (...)
(что дает генератор) или L = tuple(...)
, но у нас та же ошибка.
Как указано в комментарии, reduce
является решением здесь:
np.maximum.reduce([np.roll(A, k, axis=0) for k in range(4)])
Нет проблем с тем, чтобы пометить @Rocky_Mental как дубликат, все в порядке :)
Да, на вопрос уже был дан ответ, и я рад, что он вам помог. Простите, что пометила ваш вопрос ^_^.