【发布时间】:2020-05-10 14:48:06
【问题描述】:
我试图通过使用 for 循环遍历列表中的每个元素来将列表中的每个元素相乘。这是我的代码:
from __future__ import division
import numpy as np
import matplotlib.pyplot as plt
data = np.genfromtxt('spec.txt') #Reading in the text file
frequency_data = data[:,0]
h = 6.626e-27 #Planck constant in erg s
c = 2.998e10 #speed of light (in vacuum) in cm/s
k = 1.381e-16
def Bv(v,T):
k1 = (2.0*h)/(c**2)
x2 = (h*v)/(k*T)
return k1*((v**3)/(np.exp(x2) -1))
我尝试遍历列表中的每个元素
Bv(frequency_data, 2.275)。
BB_v = []
for k in range(len(frequency_data)):
c = Bv(frequency_data, 2.275)[k]*10**17
BB_v.append(c)
print(BB_v)
输出:
[0.0, inf, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan, nan, nan]
/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:7: RuntimeWarning: divide
by zero encountered in true_divide
import sys/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:6:RuntimeWarning:
divide by zero encountered in double_scalars
但我得到了一个包含“nan”元素的列表。为什么我会得到一个包含“nan”元素的列表?
【问题讨论】:
-
找我好像你想做
for k in Bv(frequency_data, 2.275): BB_v.append(k*10**17)? -
我们没有您的输入数据,请向minimal reproducible example 提供一些硬编码数据以复制您的错误并建议如何修复它。
-
嗨,我已经减少了我的代码并提供了输入数据。请检查。
标签: python arrays python-3.x for-loop