当我试图制作一个没有零值的直方图时,会得到一个错误:
Traceback (most recent call last):.
我有一个包含几个零的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()
我不知道这里怎么了。
这应该有效,因为您只保留高于零的元素(
Beam_irradiance_DNI>0
是用作索引的布尔掩码)。如果你想进一步使用这个,把它保存为一个变量,但是如果你只想排除直方图中的零,就不用重新定义你的变量了。只能对^{} 而不是普通python列表执行逻辑索引(
data[data != 0]
)。如果要从python列表中移除值,则需要使用列表理解来执行此操作。另一种方法是将python列表实际转换为numpy数组。
然后,您将能够执行您想要执行的逻辑索引
另一种方法是不改变数组本身,只将非零值传递给
hist
如果您仍然对零有问题,很可能是因为这些数字被存储为浮点数,并且它们的值并不是完全零。为此,您需要使用以下条件来检测“零”。
相关问题 更多 >
编程相关推荐