NumPyの使い方 [Python]
NumPy(ナムパイ、ナンパイ)は「数値計算ライブラリ」です。
NumPyでは「array」オブジェクトという、Pythonの標準リストより便利で高速演算が可能な「数値の配列」を使用します。標準リストのように[]によるアクセスやスライス操作などが可能です。
※サンプルコードの「---」以下は出力結果です。
目次
1. 配列の作成
2. 型の変更
3. 配列の次元を変更する
4. 配列の行列を反対にする
5. 配列情報を取得する
6. 合計/最小値/最大値/平均値/中央値/分散/標準偏差
7. 配列の演算
8. 配列の連結
9. ファイルから配列を生成する
1. 配列の作成
1-1. 1次元配列
arrayの引数にリスト/タプルなどを渡して、arrayを作成します。
import numpy as np np.array([0, 1, 2]) --- array([0, 1, 2])
1-2. 2次元配列
import numpy as np np.array([[0, 1, 2],[3, 4, 5],[6, 7, 8]]) --- array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
1-3. arange
numpy.arangeはPython標準のrangeと同様です。
import numpy as np arr = np.arange(5) arr --- array([0, 1, 2, 3, 4])
1-4. 0の配列を作る
import numpy as np arr = np.zeros(5) arr --- array([0., 0., 0., 0., 0.])
1-5. 1の配列を作る
import numpy as np arr = np.ones(5) arr --- array([1., 1., 1., 1., 1.])
1-6. ランダムな配列を作る
import numpy as np arr = np.random.rand(5) arr --- array([0.20056278, 0.00908189, 0.57972688, 0.92763317, 0.07148467])
2. 型の変更
import numpy as np arr = np.array([0, 1, 2]) arr.astype(np.float32) --- array([0., 1., 2.], dtype=float32)
3. 配列の次元を変更する
1次元配列を2次元配列へ変換する。
import numpy as np arr = np.arange(9).reshape(3, 3) arr --- array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
4. 配列の行列を反対にする
import numpy as np arr = np.arange(9).reshape(3, 3) arr.T --- array([[0, 3, 6], [1, 4, 7], [2, 5, 8]])
5. 配列情報を取得する
import numpy as np arr = np.array([[0, 1, 2],[3, 4, 5],[6, 7, 8]]) print("サイズ : " + str(arr.size)) print("型 : " + str(arr.dtype)) print("次元数 : " + str(arr.ndim)) print("要素数 : " + str(arr.shape)) --- サイズ : 9 型 : int32 次元数 : 2 要素数 : (3, 3)
6. 合計/最小値/最大値/平均値/中央値/分散/標準偏差
import numpy as np arr = np.array([75, 80, 95, 67, 72]) print("合計 :", np.sum(arr)) print("最小値 :", np.min(arr)) print("最大値 :", np.max(arr)) print("平均値 :", np.mean(arr)) print("中央値 :", np.median(arr)) print("分散 :", np.var(arr)) print("標準偏差 :", np.std(arr)) --- 合計 : 389 最小値 : 67 最大値 : 95 平均値 : 77.8 中央値 : 75.0 分散 : 91.76 標準偏差 : 9.579144011862438
[軸の演算(axis)]
sum,min,max,mean,median,var,stdなどでは「軸の演算」が可能です。
axis = 0 | Verticalで配列の縦(垂直)を演算する。 |
axis = 1 | Horizontalで配列の横(水平)を演算する。 |
[axisのサンプルで使用する配列]
0 | 1 | 2 |
3 | 4 | 5 |
6 | 7 | 8 |
axis = 0
import numpy as np arr = np.array([[0, 1, 2,],[3, 4, 5],[6, 7, 8]]) np.sum(arr,axis = 0) --- array([ 9, 12, 15])
axis = 1
import numpy as np arr = np.array([[0, 1, 2,],[3, 4, 5],[6, 7, 8]]) np.sum(arr,axis = 1) --- array([ 3, 12, 21])
7. 配列の演算
加算
import numpy as np # 1から4の配列 arr = np.arange(1,5) # 全ての配列の要素に1を加算する arr + 1 --- array([2, 3, 4, 5])
乗算
import numpy as np arr = np.arange(1,5) arr * 2 --- array([2, 4, 6, 8])
配列同士の加算(次元が同じ)
import numpy as np a = np.arange(1,5) b = np.arange(1,5) a + b --- array([2, 4, 6, 8])
配列同士の加算(次元が異なる)
import numpy as np a = np.ones(9).reshape(3, 3) b = np.arange(1,4) a + b --- array([[2., 3., 4.], [2., 3., 4.], [2., 3., 4.]])
配列の次元が異なる場合でも、行列のどちらかが同じならば演算が可能です。
8. 配列の連結
Vertical | 縦(垂直) |
Horizontal | 横(水平) |
import numpy as np a = np.arange(1,4) b = np.arange(4,7) np.hstack((a, b)) --- array([1, 2, 3, 4, 5, 6])
import numpy as np a = np.arange(1,4) b = np.arange(4,7) np.vstack((a, b)) --- array([[1, 2, 3], [4, 5, 6]])
9. ファイルから配列を生成する
import numpy as np # ランダムな小数を作成する arr = np.random.rand(100) # ファイルに書き込む try: f = open("test.txt", "w", encoding="utf-8") for val in arr: f.write(str(val)+ "\n") except: print("エラーが発生しました。") finally: f.close() # ファイルから読み込み配列にする arr = np.loadtxt("test.txt") # グラフを表示する %matplotlib inline import matplotlib.pyplot as plt h = plt.hist(arr)
※20行目の%matplotlib inlineはJupyter Notebook用です。
参考URL(公式)
スポンサーリンク
関連記事
公開日:2018年07月08日 最終更新日:2018年08月24日
記事NO:02694