这是一个有点奇怪的问题,但我试图通过失去for循环并依赖numpy操作来改善代码的运行时间。我仍然是处理numpy矩阵操作的初学者,我似乎无法正确翻译这一点。
for i in range (Ma):
for j in range (Na):
for h in range(Mt):
for k in range(Nt):
dx = xrfa[i] - xrft[h]
dy = yrfa[j] - yrft[k]
Wat[i,j,h,k] = at * np.exp(- ((np.square(dx) + np.square(dy))/ (2 * np.square(sigat)
任何帮助将不胜感激。我特别挣扎与dx和dy。
1条答案
按热度按时间sg2wtvxw1#
依靠broadcasting的力量!
设置:
你可以(ab)使用
np.ix_
来引入单例维度,但我将在这里显式地做:现在你的数组都广播到
(Ma, Na, Mt, Nt)
的形状,此时你可以使用一行程序来进行所有的计算(希望我正确地修复了你的括号):