numpyの使い方 インストール方法からreshape,arrayの使い方まで

今回はnumpyの習得をしていきます。

numpyはpythonでは必須ライブラリになりますので、しっかり習得しましょう。

numpyは配列と同じです。数値の計算、行列演算で使われています。

また、機械学習の計算は行列計算が多いので、このnumpyに慣れておくと良いです。

本記事のサンプルコード

>>サンプルコード(jupyter notebook)

numpyについて

numpyは数値演算を高速にできるライブラリです。

データは多次元のデータを扱うことが多いです。

例えば、表データ解析、画像処理、機械学習の計算をすることができます。

インストール

インストールは他のライブラリと同じように、pipを使います。

読み込み

読み込みは次のように決まっています。

他の人も全てこの書き方ですので、このまま使いましょう。

numpyの基礎

では、基礎を習得していきましょう。

データを作る

まず、データを作ってみましょう。

ゼロや乱数などを作っていきます。

ゼロ値

ゼロの値は、zerosメソッドを使います。

1の値

1の値は、onesメソッドを使います。

乱数

乱数は、色々な方法がありますが、0-1の乱数はrandom.randを使います。

他は、下記のリンクを参考ください。

>> 他の乱数

eye

単位行列はeyeメソッドを使います。

単位行列なので、3×3など行列同じ数値なので、1つの数値を渡します。

list,tupleから作る

listやtupleから変換する方法があります。

arrayメソッドに入れるだけです。

データを取り出す

データを取り出してみましょう。

まず、1次元からみていきましょう。

基本的には、listと同じです。

indexは0から始まります。

複数取得の場合、開始index:終了indexとするけど、終了indexの1つ前までのデータを取り出します。

次に、2次元です。listは各次元を[]で区切ります。

numpyの場合は、各次元をカンマ「,」で区切って欲しいデータを取得します。

コードで確認しましょう。

 

同じデータを取り出していますが、記述が違いますね。

多次元配列はnumpyを使うことが多いので、この記述にも慣れておきましょう。

データ読み込み

データを読み込んで、numpyで計算するという方法はよく使います。

ファイルからlistやpandas.DataFrameに読み込んで、numpyのメソッドを使う方法があります。

まず、ファイルから読み込んでみます。

次の内容の「sample.txt」を読み込みます。

コメント入れてありますので、処理を順番にみていってください。

次に、numpyのloadtxtメソッドを使ってみます。

区切り文字はカンマですが、delimiterで指定できます。

メソッド使った方が楽ですね。

データの形の確認

計算している過程で、データの次元数など形が変わっていくので、わからなくなったら、データの形を確認しましょう。

データの形は、何次元で、各次元何個ずつデータがあるかということです。

確認には、shapeを使います。

確認してみましょう。

2行×3列のデータなので、(2, 3)と出ます。

3次元になると(1次元数, 2次元数, 3次元数)と続きます。

四則演算

四則演算では、同じ要素同士を計算します。

aとbを用意して、四則演算をしてみます。

ブロードキャスト

numpyではブロードキャストという考えがあります。

先ほど、四則演算をしましたが、全部の要素に1を足すときに、同じ行列数分の1を用意するのでは、面倒ですね。

なので、多次元のデータでも1を足すだけで、ブロードキャストでは次のように、行列数を増やして足してくれます。

コードで、みてみましょう。

全部の要素に1が足されています。

このブロードキャストは、行数が同じデータがあれば、それをコピーして足してくれます。

例えば、2行 × 1列のデータを足してみます。

これは、次の図のように、2×3と2×1を足し算しています。

列数の数を合わせて(1, 3)のデータを足しても、計算してくれるので、試してみてください。

行列の積

numpyでは行列の積もdotメソッドで簡単にできます。

2×3 と 3×2の積をしてみましょう。

計算があっているか確認するのは面倒なので、しなくて良いですが、行列の積の計算を忘れている方は、下記のwikiで確認しておきましょう。

>> 行列の積

並び替え

並べ替えでは、sortメソッドを使っていきます。

まず、1次元からみていきましょう。

次は、2次元です。

2次元では、どの次元を並び替えるかの指定をaxis=対象次元-1で指定します。

対象次元を1次の並べ替えなら0、2次の並び替えなら1です。

まず、1次の方をみてみましょう。

次に、2次の方をみてみます。

どうでしょう、元データが並べ替えられています。

計算

numpyでは、最大値などの計算は一通り良いされています。

メソッド 機能
sum 合計
max 最大値
min 最小値
std 標準偏差
mean 平均
median 中央値

 

計算してみましょう。

numpyの応用

より詳しくみていきましょう。

reshape

データの、行列数は変更することができます。

変更は、reshapeメソッドを使います。

引数に、変形したい次元数をリストで渡します。

2×3を2×3に変えてみます。

このように、データの形を変更することができます。

転置

次は転置です。

転置を忘れた方は、下記のWikiを確認しておいてください。
>> wiki 転置

転置はTとするだけです。

結合

次は結合を見ていきます。

結合は縦方向、横方向があります。

まず、縦方向の結合を見てみましょう。vstackメソッドを使います。

vstackの引数に結合するデータ2つを入れます。列数があっている必要があります。

次は横方向に結合します。hstackメソッドを使います。

hstackの引数に結合するデータ2つを入れます。行数があっている必要があります。

データの連結もそうですが、画像データを横並びに連結することもできます。

argmax, argmin

argmax,argminを使うと、最大、最小値の場所をindexを取得できます。

sortのところでも出ましたが、axisで指定します。

axisを省略した場合は、全部のデータの最大値の場所を取得できます。

取得する番号は0からの番号になります。

みていきましょう。

axisを省略して場合。

 

axis=0の場合。

axis=1の場合。

argminは各自で試してみてください。

これは、機械学習の分類結果とかは、[0.3, 0.1, 0.7]などの0-1のスコア値で受け取ることがあり、どこのスコアが高いか確認する場合とかに使います。

まとめ

以上、numpyの使い方になります。

numpyはpythonでは必須ライブラリです。機械学習の計算は行列計算が多いので、numpyに慣れておくと良いでしょう。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です