这个问题与之前回答的一个类似的问题 Fast interpolation over 3D array,但不能解决我的问题。
我有一个四维数组,尺寸为 (time,altitude,latitude, longitude),表示为
我使用了
我只能这样做:
这些循环使得这种插值计算过于缓慢。是否有人有好的想法?非常感谢您的帮助。
我有一个四维数组,尺寸为 (time,altitude,latitude, longitude),表示为
y.shape=(nt,nalt,nlat,nlon)
。x 是高度,随着 (time, latitude, longtitude) 变化,这意味着 x.shape=(nt,nalt,nlat,nlon)
。我想在每个 (nt,nlat,nlon) 中的高度上进行插值计算。插值后的 x_new 应该是1维的,不会随着 (time, latitude, longtitude) 变化。我使用了
numpy.interp
,与 scipy.interpolate.interp1d
相同,并考虑了之前帖子中的答案。但这些答案都无法减少循环次数。我只能这样做:
# y is a 4D ndarray
# x is a 4D ndarray
# new_y is a 4D array
for i in range(nlon):
for j in range(nlat):
for k in range(nt):
y_new[k,:,j,i] = np.interp(new_x, x[k,:,j,i], y[k,:,j,i])
这些循环使得这种插值计算过于缓慢。是否有人有好的想法?非常感谢您的帮助。
numpy.interp
需要x
以升序排列,因此您需要首先按照x
对x
和y
进行排序。 - HYRY