【发布时间】:2016-03-11 23:44:00
【问题描述】:
当我尝试制作没有零值的直方图时,出现错误:
Traceback(最近一次调用最后一次):。
我有一个包含多个零的Beam_irradiance_DNI 值列表。我可以制作直方图,但我不想要零值。
import matplotlib.pyplot as plt
import numpy as np
import csv
# Reading data from csv file
with open('Upington_DNI.csv') as csvfile:
readCSV = csv.reader(csvfile, delimiter=',')
Hour_of_year = []
Beam_irradiance = []
for row in readCSV:
hour = row[0]
DNI = row[1]
Hour_of_year.append(hour)
Beam_irradiance.append(DNI)
Hours_since00hrsJan1 = [float(Hour_of_year[c]) for c in range(1,len(Hour_of_year))]
Beam_irradiance_DNI=[float(Beam_irradiance[c]) for c in range(1,len(Beam_irradiance))]
plt.figure(3)
Beam_irradiance_DNI[ Beam_irradiance_DNI==0 ] = np.nan
plt.hist(Beam_irradiance_DNI, color="grey")
plt.title("Histogram for Beam irradiance - DNI")
plt.xlabel("Beam irradiance - DNI [W/m2]"); plt.ylabel("Probability of occurrence")
plt.show()
我不知道这里出了什么问题。
【问题讨论】:
-
这些是浮点数吗?如果是这样,检查 exact 是否等于 0 是不够的。您需要检查是否
abs(val) < epsilon。此外,您可以仅授予非零值并创建一个新数组,而不是替换为 NaN。然后你不要修改你的原始数据。而且看起来你的变量是空的...... -
我在您的列表中看不到任何零。
-
@Suever 感谢您的 cmets。我已经包含了整个代码。您现在可以建议一种方法吗?
标签: python numpy matplotlib scipy