如何在特定频率计数下从python中的直方图中删除数据?
假设我有10个箱子,第一个箱子有4个,第二个有2个,第三个有1个,第四个有5个等等...... 现在我想摆脱计数为2或更少的数据。所以第二个bin会变为零,第三个就会变为零。
示例:
import numpy as np
import matplotlib.pyplot as plt
gaussian_numbers = np.random.randn(1000)
plt.hist(gaussian_numbers, bins=12)
plt.title("Gaussian Histogram")
plt.xlabel("Value")
plt.ylabel("Frequency")
fig = plt.gcf()
给出:
我希望摆脱频率低于“X' X' (例如,频率= 100)。
想:
谢谢。答案 0 :(得分:2)
Une np.histogram
来创建直方图。
然后使用np.where
。给定一个条件,它会产生一系列布尔值,您可以使用它来索引直方图。
import numpy as np
import matplotlib.pyplot as plt
gaussian_numbers = np.random.randn(1000)
# Get histogram
hist, bins = np.histogram(gaussian_numbers, bins=12)
# Threshold frequency
freq = 100
# Zero out low values
hist[np.where(hist <= freq)] = 0
# Plot
width = 0.7 * (bins[1] - bins[0])
center = (bins[:-1] + bins[1:]) / 2
plt.bar(center, hist, align='center', width=width)
plt.title("Gaussian Histogram")
plt.xlabel("Value")
plt.ylabel("Frequency")
(情节部分灵感来自here。)