NumPy1 概要
Python入門が一応終わりましたので、次にNumPyを学んで行きたいと思います。
引き続きAidemyさんの講座を受講しながらアウトプットのためにブログを更新して行きます。
AidemyさんHP → https:// aidemy.net
【NumPy概要】
Pythonの拡張ライブラリの一つで、数値計算を効率的に行う事ができ、大量のデータ処理にかかる時間も短縮できます。
主なクラスはnp.ndarrayと呼ばれる多次元を扱う配列です。
ndarray型はNumPyを使うときにのみ用いられるデータ型です。
ndarray型は、「NumPy配列」や、単に「配列」などと呼ばれるデータ型で、リスト型のように複数のデータを1つにまとめて扱えます。
ちなみにライブラリとは、クラスや関数がまとめられたものです。
簡単に言えば、Pythonに拡張機能を提供してくれるものです。
基本コードを記載していきます。
import numpy as np
list_1 = np.array([1,2,3,4,5])
print(list_1)
>>> 出力結果
[1 2 3 4 5]
import numpy as np
list_1 = [1, 2, 3, 4, 5] #[1,2,3,4,5]をlist_1に代入
arr_1 = np.array(list_1) #arrayでlist_1を呼び出す事をarr_1に代入
print('list型')
print(list_1)
print('ndarray型')
print(arr_1)
>>> 出力結果
list型
[1, 2, 3, 4, 5]
ndarray型
[1 2 3 4 5]
NumPy配列arr_1の全ての要素に「5」を加えた変数を作る場合、次のようにたった1行記述するだけで済みます。
【配列同士の演算】
NumPy配列arr_1とarr_2の要素ごとのたし算を行う場合、次のように記述します。
import numpy as np
arr_1 = np.array([1, 2, 3, 4, 5])
arr_2 = np.array([3, 2, 5, 4 ,1])
arr_3 = arr_1 + arr_2 # 要素ごとのたし算を行い、結果をarr_3に代入しています
print(arr_3)
>>> 出力結果
[4, 4, 8, 8, 6]
他にも演算し、それぞれの配列の数値について一致・不一致を表示できます
import numpy as np
list_1 = [3, 33, 300]
list_2 = [3, 30, 300]
array_1 = np.array(list_1)
array_2 = np.array(list_2)
result = array_1 == array_2
print(type(result))
print(result)
>>> 出力結果
<class 'numpy.ndarray'>
[ True False True] #3と300について一致(True)で、33と30は不一致(False)
配列の種類については、list、array、numpy.ndarrayがありますので、
改めてまとめようと思います。
【配列の作成】
Numpyの配列について基本的な部分を触れていきます。
配列:複数のデータをまとめたもの
要素:配列に格納されたそれぞれのデータ
インデックス:要素を呼び出すときに使われるもの(添字)
となっており、
コードで説明していくと、、、
a = [1,2,3]
これは、3つのデータ「1」「2」「3」が入った1次元配列です。
a = [[1,2,3],[4,5]]
これは2つの配列「[1,2,3]」と「[4,5]」の2次元配列です。
この配列の中のデータ「2」は、第0要素「[1,2,3]」の第1要素になっています。そこでこのデータを呼び出すには「a[0][1]」とします。
a = [[[1,2,3],[4,5]],[[6,7,8,9],[10],[11,12]]]
この3次元配列cには2つの2次元配列「[1,2,3],[4,5]」と「[6,7,8,9],[10],[11,12]」が要素として入っています。
この配列の中のデータ「8」は第1要素「[6,7,8,9],[10],[11,12]」の第0要素「[6,7,8,9]」の中にあり、その第2要素になっています。そこでこのデータを呼び出すには「a[1][0][2]」とします。
上記説明の上、配列を作成してみますと、、、
import numpy as np
list_1 = [1, 2, 3, 4, 5] # リストを作成
arr_1 = np.array(list_1) # リストから、NumPy配列を作成
>>> 出力結果
[1, 2, 3, 4, 5]
2重のリストの場合は、、、
import numpy as np
list_2 = [[1, 2], [3, 4], [5, 6]]
arr_2 = np.array(list_2)
print(arr_2)
>>> 出力結果
[[1 2]
[3 4]
[5 6]]
出力結果にでた
[[1 2]
[3 4]
[5 6]]
についてはこれから説明していきます。
【列と行】
2次元のNumPy配列を扱う場合、要素のまとまりを「行」や「列」と呼んで表すことがあります。配列の横方向の要素のまとまりを「行」といい、縦方向の要素のまとまりを「列」といいます。
この画像のように、1からではなく0から数え始めることを、
ここでは「ゼロオリジン」といいます。
特に断りがない限り、NumPy配列の行・列はゼロオリジンで数えます。
【配列同士の演算 追加】
補足程度で、配列同士の演算を追記します。
import numpy as np
list_1 = np.array([[1,2],[3,4]])
list_2 = np.array([[10,20],[30,40]])
list_3 = list_1 + list_2
print(list_3)
>>> 出力結果
[[11 22]
[33 44]]
下記のように行が足りない場合でも自動で補完してくれます
*ブロードキャストと言います。
import numpy as np
list_1 = np.array([[1,2],[3,4]])
list_2 = np.array([10,20])
list_3 = list_1 + list_2
print(list_3)
>>> 出力結果
[[11 22]
[13 24]]
列の場合も同様です。
import numpy as np
list_1 = np.array([[1,2,3],[4,5,6]])
list_2 = np.array([[10],[20]])
list_3 = list_1+ list_2
print(list_3)
>>> 出力結果
[[11 12 13]
[24 25 26]]
今回はNumpyの概要を説明させて頂きました。
お読みいただきありがとうございました。