[英]python for loop for creating a 2D array form 2 1D array
我想使用python在不同溫度下獲得振動分區功能。 我有兩個一維數組,例如: freq=[100,150,200]
(實際上是從.dat文件讀取的)和Temp=np.arange(273.,973.,25)
。 現在,對於特定溫度(1/1-exp(-h*nu/kb/T))
,qvib =超過頻率的乘積。 我的for循環是:
for i in range(len(T)):
for j in range(len(freq)):
q[i][j]=1/(1-np.exp(-h*freq[j]/kb/T[i]))
Q[i]=np.prod(q[i][:])
我只用python兩到三天。 我什至不知道python的所有內聯操作。 我有兩個問題:1)我可以不使用for循環來做到這一點(例如僅使用sum或no.prod)2)我的for循環無法正常工作。 我在互聯網上搜索,但找不到此類數學運算的循環參考有什么用。 在此先感謝您的幫助。
您必須至少將Q
定義為與溫度數組長度相同的空數組,然后才能分配給它:
Q = np.empty(len(T))
更好的是:
for i in range(len(T)):
q = 1/(1-np.exp(-h*freq/kb/T[i]))
Q = np.prod(q)
但是,關於NumPy的真正好處是可以完全消除Python循環:
Q = np.prod(1/(1-np.exp(-h*freq[:, None]/kb/T)), axis=0)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.