直方图操作以删除不需要的数据

时间:2016-03-31 19:13:55

标签: python numpy histogram

如何在特定频率计数下从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()

给出:

enter image description here

我希望摆脱频率低于“X' X' (例如,频率= 100)。

想:

enter image description here

谢谢。

1 个答案:

答案 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。)