用于创建2D数组的循环的python for 2 1D数组?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (175)

我想用python来获得不同温度下的振动分区功能。我有两个1D数组,如:( freq=[100,150,200]这实际上是从.dat文件中读取)和Temp=np.arange(273.,973.,25)。现在,qvib =特定温度下的产品超过频率(1/1-exp(-h*nu/kb/T))。我的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)

扫码关注云+社区

领取腾讯云代金券