Я хочу применить функцию, которая принимает 2D-массив (и возвращает одну и ту же форму) для каждого 2D-фрагмента 3D-массива. Какой эффективный способ сделать это? numpy.fromiter
возвращает 1D-массив, а numpy.fromfunction
необходимо применять к каждой координате индивидуально.
В настоящее время я делаю
foo = np.array([func(arg, bar2D) for bar2D in bar3D])
Это дает мне то, что я хочу, но понимание списка происходит очень медленно. Кроме того, func
является одномерной производной с конкретными граничными условиями. numpy.gradient
только, кажется, выполняет производные N-D с N размерностью массива, но, возможно, есть еще одна процедура, которая сделает все для меня?
Изменить: понимание списка работает, но я ищу более быстрый способ сделать это. bar3D
может быть большим, до (500,500,1000)
. Все подпрограммы numpy
, которые я нашел для применения функций к массивам, по-видимому, предполагают, что функция или массив 1D.