簡體   English   中英

用於創建2D數組形式2 2D數組的python for循環

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM