Я хочу создать функцию, которая работает с пятью одномерными массивами и возвращает пятимерный массив. Затем я хочу «суммировать» три оси функции, чтобы свести ее к двумерному массиву, который затем отображается на pcolormesh по двум осям, по которым не было суммировано. Мне казалось, что я понял, как это сделать, но, видимо, я что-то упускаю и не нашел хорошего объяснения того, в чем ошибаюсь.
Вот краткое описание того, что я пробовал:
Код: Выделить всё
import numpy as np
import matplotlib.pyplot as plt
a = np.linspace(-10, 10)
b = np.linspace(-10, 10)
c = np.linspace(-10, 10)
d = np.linspace(-5, 5)
e = np.linspace(-7, 7)
A, B, C = np.meshgrid(a,b,c)
D, E = np.meshgrid(d, e)
def f(a,b,c,d,e):
return a**2 + b**3 + c**6 + d + 2*e**3
F = np.sum(f(A, B, C, D, E), axis = 0)
G = np.sum(F, axis = (2,3))
plt.pcolormesh(B, C, G)
plt.show()
Насколько я понимаю, строка F = np.sum(f(A, B, C, D, E), axis = 0) будет суммировать функцию по всем значениям a в соответствующем линейном пространстве и, следовательно, вернет f, оцененную по оставшимся 4 осям B, C, D, E, а затем впоследствии строка G = np.sum(K, axis = 2,3) будет суммировать D,E, чтобы вернуть двумерный массив f, оцененный по осям B, C и суммированный по остальным (в минимальном примере здесь я мог бы сложить строки для создания F и G вместе, но в моем реальном коде общий массив слишком велик для памяти, поэтому я разделяю его).
Может кто-нибудь объяснить мне простыми словами, что происходит не так, и правильный синтаксис для создания желаемого результат?
Подробнее здесь:
https://stackoverflow.com/questions/787 ... in-a-numpy