【发布时间】:2020-07-02 13:01:47
【问题描述】:
我的问题是这个 for 循环需要很长时间才能完成。我想要一种更快的方法来完成它。 我的代码是:
dx = 20
dy = 20
dz = 20
x = np.arange(0, 1201, dx)
y = np.arange(0, 1001, dy)
z = np.arange(20, 501, dz)
drho = 3000 # Delta Rho (Density Contrast) kg/m^3
# Input Rho to Model
M = np.zeros((len(z), len(x), len(y)))
M[6:16, 26:36, 15:25] = drho
m = np.array(M.flat)
# p (61, 1525)
# M(25, 61)
# m(1525,)
# Station Position
stx, sty = np.meshgrid(x, y)
stx = np.array(stx.flat)
sty = np.array(sty.flat)
stz = np.zeros(len(stx))
# Make meshgrid
X, Y, Z = np.meshgrid(x, y, z)
X = np.array(X.flat)
Y = np.array(Y.flat)
Z = np.array(Z.flat)
p = np.zeros((len(stx), len(X)))
# p(3111, 77775)
for i in range(len(X)):
for j in range(len(stx)):
p[j, i] = (Z[i] - stz[j]) / ((Z[i] - stz[j]) ** 2 + (X[i] - stx[j]) ** 2 + (Y[i] - sty[j]) ** 2) ** (3/2)
迭代变量有时会超过 2.41 亿次,而且会一直持续下去。
【问题讨论】:
标签: python performance numpy for-loop iteration