私は宇宙論を研究していますが、最近は数値シミュレーションの経験がありました。新しい配列を定義する際の値エラー
私はC++での経験がありますが、私はPythonを使い始めました。
以下は現在作成しているPythonコードの一部です。ライン "SD = np.array([])(L、1)再構築" のために
def energy(s):
def spectrum(s):
phi = sol[s,:]
N = len(phi)
return 2.0/N * np.real(np.fft.rfft(phi))
delta_t = t_array[1] - t_array[0]
sp = spectrum(s)
spb = spectrum(s-1)
spa = spectrum(s+1)
L = len(sp)
def spectrum_dot(s):
sD = np.array([]).reshape(1,L)
for j in range(0,L):
sD[j] = (spa[j] - spb[j])/(2 * delta_t)
return sD
sd = spectrum_dot(s)
E = np.array([]).reshape(1,L)
for i in range(0,L):
E[i] = (sd[i]*sd[i]/2) + (sp[i]*sp[i]*(i*math.pi/128)*(i*math.pi/128)/2) + V(sp[i])
return E
f_l = energy(time_steps * 128/619)
plt.plot(f_l[1:200])
plt.axhline(0,color='black',linewidth=0.6)
plt.axis([0,200,-1,1])
plt.savefig('128.png')
、私が言うとValueError取得しています "とValueErrorを:新しい配列の合計サイズが変わらなければなりません"。
"spectrum_dot(s)"のリターン配列を定義することは問題であるようです。
このエラーを解決するヒントを教えてください。
ありがとうございます。
pythonコードを投稿する際にインデントを正しく書き換えるようにしてください。ひどくインデントされたPythonコードはナンセンスです。 – khelwood
ありがとうございます。私はインデントを訂正しました。 – flaton
空の配列の形状を変更しようとしています。元の配列は形状(0、)を持っているので、長さ 'L'の何かにシェイプすることができなくなります。 'np.array([0] * L).reshape(1、L)'のようなものがうまくいくでしょう。np.zeros((1,3)) – JCVanHamme