我正在嘗試使用Python插值函數來獲取給定x的值y,但是我得到了錯誤「raise ValueError(」x和y數組必須沿着插值軸長度相等「,即使我的數組有兩者的大小和形狀相同(根據我在代碼中使用.shape時得到的結果)我對編程非常陌生,所以我不知道如何檢查我的數組中還有什麼不同,下面是我的代碼:python - 沿着插值軸的不同數組長度?
s = []
def slowroll(y, t):
phi, dphi, a = y
h = np.sqrt(1/3. * (1/2. * dphi**2 + 1/2.*phi**2))
da = h*a
ddphi = -3.*h*dphi - phi
return [dphi,ddphi,da]
phi_ini = 18.
dphi_ini = -0.1
init_y = [phi_ini,dphi_ini,1.]
h_ini =np.sqrt(1/3. * (1/2. * dphi_ini**2. + 1/2.*phi_ini**2.))
t=np.linspace(0.,20.,100.)
from scipy.integrate import odeint
sol = odeint(slowroll, init_y, t)
phi = sol[:,0]
dphi = sol[:,1]
a=sol[:,2]
n=np.log(a)
h = np.sqrt(1/3. * (1/2. * dphi**2 + 1/2.*phi**2))
s.extend(a*h)
x = np.asarray(s)
y = np.asarray(t)
F = interp1d(y, x, kind='cubic')
print F(7.34858263)
有趣的....我也沒有錯誤,但有一個不同的輸出結果>>> >>> 2.02845299116e + 20' – Aaron
確實很有趣...我以前的運行是在我的Windows機器上運行2.7.12。如果我使用python 2.7.6在Ubuntu 14.04上運行它,我會得到>>> >>> 2.09312088926e + 20'。我的scipy版本分別是0.17.0和0.13.3。必須與實際插值函數 – nanoPhD
的微小變化有關,謝謝兩位!在我的實際項目中,我在不同的地方做了倒數第二線,當我聽說它適用於您時,我將其更改爲上述內容,現在可以使用!但是我意識到,當我給出它時,上面的代碼給了我x,但我想要相反。當我在上面的代碼中反轉y和x時,會出現另一個錯誤「numpy.linalg.linalg.LinAlgError:singular matrix」。有關於此的任何想法? – user6518967