今回はNumPyのヒストグラムを作る関数であるhistogram
関数について解説します。
matplotlibを使えば、直接ヒストグラムのグラフを作ることが可能ですが、値だけ知りたいというだけのときは、この関数が有効でしょう。もちろん、この関数で作成した配列をつかってmatplotlibで可視化することもできます。
まずは、APIドキュメントを確認してみましょう。
numpy.histogram(a, bins=10, range=None, normed=False, weights=None, density=None)
params:
パラメータ名 |
型 |
概要 |
a |
array_like 配列に相当するもの |
ここで指定された配列の要素を元にヒストグラムを作成します。計算するために配列は1次元化されます。 |
bins |
intもしくは スカラーのシーケンス または文字列(string) |
(省略可能)初期値10 intのときは、階級の数を指定します。ここがスカラーのシーケンスのときは、ビン(bins)の境界を決めることができます。文字列(string)のときはどの数式を用いてビンの幅を決めるか指定します。 |
range |
(float, float) |
(省略可能)初期値None ビンの範囲を定めます。何も指定がないときは(a.min(), a.max())と、aの値の範囲となっています。 |
normed |
bool値 |
(省略可能)初期値False 非推奨の引数でver2.0以降はなくなるとされています。総面積が1となるように標準化するかどうかを指定します。この引数は使わず、densityを用いて指定しましょう。 |
weights |
array_like |
(省略可能)初期値None カウントする際の重み(weights)を指定します。 |
density |
bool値 |
(省略可能)初期値None Falseなら、各々のビンにおけるデータの個数が返されます。Trueなら、総面積が1となるよう標準化された度数が返されます。 |
returns:
度数の一覧の配列と、ビンの境界の配列のタプルが返されます。
引数として、bins
でビンの境界などを指定し、range
でビンの範囲を指定します。normed
は公式サイトで非推奨の引数となっているため、今回は使わないことにします。weights
で各要素の重みを設定します。density
で標準化するかどうかを指定します。
bins
の中には、文字列(string)で指定できるものがあり、それらは定められた計算方法を元にヒストグラムの算出を行います。しかしながら、このように指定している使用例はほとんど存在しないため、今回は説明を省略します。
まずは、基本的な使い方をみていきます。何も引数を指定せずに、とりあえずヒストグラムを作ってみます。
range
を変更してみます。これでビンの範囲を定めることができます。
次に、bins
の値を変更していきます。初期値は10で、range
の値が特に変更されていなければ、指定された配列の要素の最大値と最小値との間を10等分した区間となります。
次に、weights
を指定してみます。
次は標準化を行ってみましょう。これはdensity
で指定することができます。本来はnormedがその役目を負っているはずですが、非推奨のため、density
で代用します。