我希望您能够在三维数组中插值一个轴的数据。不同值的给定x值略有不同,但它们应该映射到相同的x值。
由于给定的x值不相同,目前我会执行以下操作:
使用两个嵌套的for循环很慢,这并不奇怪。有没有办法提高速度?也许可以通过一些NumPy数组魔术或并行化来实现。
由于给定的x值不相同,目前我会执行以下操作:
import numpy as np
from scipy import interpolate
axes_have = np.ones( ( 2, 72, 2001 ) )
axes_have *= np.linspace( 0, 100, 2001 )[None,None,:]
axes_have += np.linspace( -0.3, 0.3, 144 ).reshape( ( 2, 72 ) )[:,:,None]
arr = np.sin( axes_have )
arr *= np.random.random( (2, 72 ) )[:,:,None]
axis_want = np.linspace( 0, 100, 201 )
arr_ip = np.zeros( ( 2, 72, 201 ) )
for i in range( arr.shape[0] ):
for j in range( arr.shape[1] ):
ip_func = interpolate.PchipInterpolator( axes_have[i,j,:], arr[i,j,:], extrapolate=True )
arr_ip[i,j,:] = ip_func( axis_want )
使用两个嵌套的for循环很慢,这并不奇怪。有没有办法提高速度?也许可以通过一些NumPy数组魔术或并行化来实现。
arr
的示例吗? - DJKarr
。 - leviathan