4 개의 변수 a, b, c 및 d에 의존하는 데이터가 있다고 가정합니다. 보간은 a와 b의 단일 값에 해당하는 2D 배열과 c와 d에 대한 값 배열을 반환해야합니다. 그러나 배열 크기는 동일 할 필요는 없습니다. 구체적으로 말하자면, 제 데이터는 트랜지스터 시뮬레이션에서 가져온 것입니다. 전류는 4 개의 변수에 따라 달라집니다. 나는 파라 메트릭 변형을 그려보고 싶다. 매개 변수의 점 수는 가로 축의 점 수보다 훨씬 적습니다.N 차원 배열을 보간하기 위해 scipy.interpolate.interpn 사용하기
import numpy as np
from scipy.interpolate import interpn
arr = np.random.random((4,4,4,4))
x1 = np.array([0, 1, 2, 3])
x2 = np.array([0, 10, 20, 30])
x3 = np.array([0, 10, 20, 30])
x4 = np.array([0, .1, .2, .30])
points = (x1, x2, x3, x4)
다음 작품 :
xi = (0.1, 9, np.transpose(np.linspace(0, 30, 4)), np.linspace(0, 0.3, 4))
result = interpn(points, arr, xi)
등이 수행합니다
xi = (0.1, 9, 24, np.linspace(0, 0.3, 4))
result = interpn(points, arr, xi)
만하지이 : 당신이 볼 수 있듯이
xi = (0.1, 9, np.transpose(np.linspace(0, 30, 3)), np.linspace(0, 0.3, 4))
result = interpn(points, arr, xi)
, 지난 경우 , 마지막 두 배열의 크기는입니다.은 다릅니다. 이 기능이 scipy에서 지원하지 않습니까? 아니면 interpn
을 잘못 사용하고 있습니까? 이 그림을 만들려면 xi
중 하나가 매개 변수이고 다른 하나는 가로 축입니다.
정확하게'interpn'을 사용하지 않는 것처럼 보입니다 ... 나는'points'가 그리드를 나타내는 것으로 가정합니다. 즉, 네 개의 차원에서 각각 "샘플링 포인트"를 나타내는 것으로 가정합니다. 'arr'은 이러한 알려진 값을 가지고 있습니다.그러나 무작위로 만들면 보간이 작동하는지 여부를 확인하기가 어렵습니다. 대신에 네 가지 차원에서 각각 똑같이 또는 더 좋게 만들어보십시오. 'xi'는'arr'의 값을 알고 자하는 지점의 _coordinates_이어야합니다. 'xi'는 k 행, k 점, 4 열 (4D 데이터)의 k 행 배열이어야합니다. – Praveen
감사합니다. Praveen! 그러나 제 질문은 다음과 같습니다. 내가 4 개의 변수에 의존하는 데이터를 가지고 있다고 가정 해보자 : a, b, c, d. 보간은 a와 b의 단일 값에 해당하는 2D 배열과 c와 d에 대한 값 배열을 반환해야합니다. 그러나 배열 크기는 동일 할 필요는 없습니다. 구체적으로 트랜지스터 시뮬레이션에서 얻은 데이터입니다. 전류는 4 개의 변수에 따라 달라집니다. 나는 파라 메트릭 변형을 그려보고 싶다. 매개 변수의 점 수는 가로 축의 점 수보다 훨씬 적습니다. –
다음 번에 주석에 많은 정보를 추가하는 대신 직접 질문을 편집하십시오. – Praveen