假設我有依賴4個變量的數據:a,b,c和d。我想插入返回一個二維數組,它對應於a和b的單個值,以及c和d的值數組。但是,數組大小不必相同。具體來說,我的數據來自晶體管模擬。電流取決於這裏的4個變量。我想繪製一個參數變化。參數上的點數比橫軸的點數少很多。使用scipy.interpolate.interpn插入N維數組
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)
正如你可以看到,在過去的情況下, ,最後兩個數組的大小在xi
是不同的。 scipy不支持這種功能嗎?或者我錯誤地使用了interpn
?我需要這個創建一個情節,其中一個xi
是一個參數,而另一個是橫軸。
看起來好像你沒有正確使用'interpn' ......我假設'points'代表你的網格,即你的四個維度中每個維度的「採樣點」。 'arr'擁有這些已知的值。但是使它們變爲隨機意味着很難檢查插值是否工作。試着讓它們全都相等,或者更好,在四個維度中都是線性的。 'xi'應該是_want_知道'arr'值的點的_coordinates_。 'xi'應該是k行,k個點和4列(4D數據)的數組。 – Praveen
謝謝Praveen!然而,我的問題如下。假設我有依賴於4個變量的數據:a,b,c,d。我想插入返回一個二維數組,它對應於a和b的單個值,以及c和d的值數組。但是,數組大小不必相同。 具體而言,我的數據來自晶體管模擬。電流取決於這裏的4個變量。我想繪製一個參數變化。參數上的點數比橫軸的點數少很多。 –
下一次,直接編輯你的問題,而不是在評論中添加很多信息 – Praveen