配列の使い方です。
配列は、情報をしまっておくマス目をした箱のことです。
numpyを使うと、配列を使って計算することができます。
配列はデータ処理の基本ですが、作り方が複数あるため、慣れないうちは混乱してします。
まずは、3種類の方法があることを覚えておきましょう。
配列を作る方法
- list
- numpy
- pandas
実際に使ってみましょう。
In [1]: list = [1, 2, 3]
In [2]: list
Out[2]: [1, 2, 3]
In [1]: listと名前をつけた箱に、[1, 2, 3]をいれる。
In [2]: listから取り出す。
Out[2]: listの内容
In [1]: import numpy as np
In [2]: array = np.array([1, 2, 3])
In [3]: array
Out[3]: array([1, 2, 3])
In [1]: numpyが使えるようにする(ライブラリの読み込み)。
In [2]: arrayと名前をつけた箱に、[1, 2, 3]をいれる。
In [3]: arrayから取り出す。
Out[3]: arrayの内容
In [1]: import pandas as pd
In [2]: series = pd.Series([1, 2, 3])
In [3]: series
Out[3]: 0 1
1 2
2 3
dtype: int64
In [1]: pandasが使えるようにする(ライブラリの読み込み)。
In [2]: seriesと名前をつけた箱に、[1, 2, 3]をいれる。
In [3]: seriesから取り出す。
Out[3]: seriesの内容
pandasの配列は、縦に並んでおり、o行目に1、1行目に2、2行目に3が入っています。
3種類の方法で配列を作ることができました。
どれも[1, 2, 3]を記録できていますので、次は計算をしてみましょう。
配列の計算をする
配列に記録した[1, 2, 3]に2を乗算してみます。
配列の要素が2倍の値になるでしょうか。
In [1]: list * 2
Out[1]: [1, 2, 3, 1, 2, 3]
In [1]: listに2を乗算する。
Out[1]: listの内容
残念ながら期待していた[2, 4, 6]ではありません。
listの要素を2倍するには、配列の要素に2を乗算します。
In [1]: list[0]
Out[1]: 1
In [2]: list[0] * 2
Out[1]: 2
In [1]: listの0番目を取り出す。
Out[1]: list[0]の内容
In [2]: listの0番目に2を乗算する。
Out[2]: list[0]*2の内容
ねらい通り、要素の値が2倍になりました。
In [1]: array * 2
Out[1]: array([2, 4, 6])
In [1]: array に2を乗算する。
Out[1]: arrayの内容
numpyは、ねらい通りの結果になりました。
In [1]: series * 2
Out[1]: 0 2
1 4
2 6
dtype: int64
In [1]: seriesに2を乗算する。
Out[1]: seriesの内容
pandasも、ねらい通りの結果になりました。
ここまでのまとめ
- 3種類の方法で、配列を作ることができた
- 配列の作り方によって、計算での使い方が違うことがわかった
- numpyとpandasは、配列の要素をまとめて計算することができた
本題: numpyで計算する
ここからは、numpyを使って計算をしていきます。
四則演算をします。
In [1]: array = np.array([1, 2, 3])
In [2]: array + 2
Out[2]: array([3, 4, 5])
In [1]: arrayと名前をつけた箱に、[1, 2, 3]をいれる。
In [2]: arrayに2を加算する。
Out[2]: arrayの内容
In [3]: array - 2
Out[3]: array([-1, 0, 1])
In [3]: arrayに2を減算する。
Out[3]: arrayの内容
In [4]: array * 2
Out[4]: array([2, 4, 6])
In [4]: arrayに2を乗算する。
Out[4]: arrayの内容
In [5]: array / 2
Out[5]: array([0.5, 1., 1.5])
In [5]: arrayに2を除算する。
Out[5]: arrayの内容
上手く計算できています。
計算結果は記録されませんので、配列arrayは生成したときのままです。
計算結果を記録したいときは、計算結果を配列にいれます。
In [6]: arrayに2を加算して、arrayにいれる。
Out[1]: arrayの内容
In [6]: array = array + 2
In [7]: array
Out[7]: array([3, 4, 5])
計算結果が、配列arrayに記録されています。
まとめ
- numpyで配列を作ることができた
- numpyで配列を使って、四則演算ができた
補足:numpyの実力がわかるのは、この先です
numpyでは、配列の要素をまとめて計算できましたが、この仕組みをブロードキャストといいます。
実行速度が速いことや、少ないコードで記述できるメリットがあります。
機械学習などでnumpyの配列を使うときは、今回の1次元だけではなく、2次元以上は配列を使います。
2次元でモノクロ画像、3次元でカラー画像。