3 차원 배열 내부에 한 축의 데이터를 보간하고 싶습니다. 다른 값에 대해 지정된 x 값은 약간 다르지만 모두 동일한 x 값에 매핑되어야합니다. 주어진 x 값 이후 하나의 배열 축을 빠르게 보간합니다.
현재 내가 다음을 수행, 동일하지 않은 두 개의 중첩 된for
-loops를 사용
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)
는 당연히 매우 느립니다.
속도를 개선 할 방법이 있습니까? 어쩌면 NumPy 배열 마법 또는 병렬 처리를 수행합니다.
'arr'샘플을 추가 할 수 있습니까? – DJK
예제에서 오류가 발생했습니다. 이제 해결되었습니다. 'arr'이 주어져야한다. – leviathan