2016-03-31 3 views
1

Wie entferne ich Daten aus einem Histogramm in Python mit einer bestimmten Häufigkeit?Histogramm-Manipulation zum Entfernen unerwünschter Daten

Say I 10 Bins haben, hat der erste Behälter eine Anzahl von 4, die zweite 2, der dritte 1, vierte hat 5, etc ... Jetzt möchte ich die Daten, um loszuwerden, die eine hat Zählung von 2 oder weniger. Also würde der zweite Behälter auf Null gehen, genauso wie der dritte.

Beispiel:

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() 

Gibt:

enter image description here

und ich möchte mit weniger als einer Frequenz des Bins loswerden sagen 'X' (Frequenz sein könnte = 100 für Beispiel).

wollen:

enter image description here

Ihnen danken.

+3

Sie geben zu wenige Informationen. Was hast du bisher versucht? –

+0

Kannst du irgendeinen Code posten? – linusg

+0

Sie verwenden nicht Ihren Import in dem Beispiel, aber Sie verwenden np und plt, die ich denke, sind von numpy und matplotlib.pyplot. –

Antwort

2

Une np.histogram zum Erstellen des Histogramms.

Dann verwenden Sie np.where. Wenn eine Bedingung gegeben ist, liefert sie ein Array von Booleschen Werten, mit denen Sie Ihr Histogramm indizieren können.

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") 

(Plot Teil von here inspiriert.)

+0

nein Ich möchte die Werte loswerden, wenn die Häufigkeitszählung auf diesem Bin niedrig ist – Scientized

+0

Sie meinen, den Wert auf 0 setzen oder den Wert komplett entfernen? Was würden Sie zum Beispiel in meinem Beispiel erwarten? –

+0

Ja, loswerden sie komplett :) Es gibt einen Grund für den Wahnsinn – Scientized