TOP > カテゴリ > Python・人工知能・機械学習 >

NumPyの使い方 [Python]

Python/TensorFlowの使い方(目次)

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 = 0Verticalで配列の縦(垂直)を演算する。
axis = 1Horizontalで配列の横(水平)を演算する。

[axisのサンプルで使用する配列]

012
345
678

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(公式)

http://www.numpy.org/





関連記事



公開日:2018年07月08日 最終更新日:2018年08月24日
記事NO:02694