2016-06-12 2 views
1

にビンを取り除いた後、私は最高周波数のビンせずにヒストグラムを取得する必要のあるデータの大規模な配列を持つヒストグラムを保存します。私はthisを使ってそのようなビンを取り除いていますが、別のヒストグラムと比較する必要があるので、変更したヒストグラムを保存する必要があります。初期データは変更されていないため、これを行う方法はわかりません。プレゼンテーションの変更だけを見ることができます。私は何とか(最高周波数のビンに表示され、それらのデータを削除するなど)ヒストグラムのような変更を反映するために、初期データを操作することを考えていましたが、私はこれまで動作しませんしようとしているものを。この主残念ながら仕事をしていない私の目的のために働くためにいくつかの変更を上記のリンク、に基づいて、サンプルコード、次のとおりです。私は最も高い周波数でビンを見ることができますはnumpyの

import numpy as np 
import matplotlib.pyplot as plt 

gaussian_numbers = np.random.randn(100) 

# Get histogram 
values, bin_edges = np.histogram(gaussian_numbers, bins=6) 
centers = (bin_edges[:-1] + bin_edges[1:])/2 
width = (bin_edges[1] - bin_edges[0]) 
plt.bar(centers, values, color="blue",align='center',width=width) 
plt.show() 

values[np.where(values == np.max(values))] = 0 
binCenters =(bin_edges[:-1] + bin_edges[1:])/2 

plt.bar(binCenters, values, color="blue",align='center', width=width) 
plt.show() 

new=gaussian_numbers[(gaussian_numbers!= np.max(values))] 
print np.sum(new-gaussian_numbers) 

はされています棒グラフを描くと削除されます。しかし、私のデータからそのような値を削除してnewという配列に保存しようとすると(のヒストグラムを新しいに保存したい)、の新しいの間に差異はありませんgaussian_numbers。これは、ヒストグラムが同じであることを意味します。そのようなデータを削除する方法はありますか?

答えて

0

私はそれを行う方法を考え出したと思います。基本的には、ヒストグラムの頻度が最も高いビンの範囲を見つけ、それを元のデータから削除します。ここで興味がある人のためのサンプルコードは次のとおりです。

import numpy as np 
import matplotlib.pyplot as plt 

gaussian_numbers = np.random.randn(100) 
print gaussian_numbers.shape 
# Get histogram 
values, bin_edges = np.histogram(gaussian_numbers, bins=6) 
centers = (bin_edges[:-1] + bin_edges[1:])/2 
width = (bin_edges[1] - bin_edges[0]) 
plt.bar(centers, values, color="blue",align='center',width=width) 
plt.show() 


bin_min= bin_edges[np.where(values == np.max(values))] 
bin_max= bin_min +width 
new_val = gaussian_numbers[(gaussian_numbers<bin_min) | (gaussian_numbers>bin_max)] 


values, bin_edges = np.histogram(new_val, bins=6) 

centers = (bin_edges[:-1] + bin_edges[1:])/2 
width = (bin_edges[1] - bin_edges[0]) 
plt.bar(centers, values, color="blue",align='center',width=width) 
plt.show() 

これは、バーグラフの前と後である:今私は新しいヒストグラムを保存することができます

enter image description here

enter image description here

お知らせ最初のヒストグラムで最も高い周波数のビンを取り除いた後に新しいデータが保存されているからです。また、最初と最後のビンは、データが削除されたビンを観察するために等しくなければならないことに注意してください。