NumPyの基本的な使い方についての自分用勉強メモ。
今回は、効率的に配列や多次元配列を扱うことができ、高速な数値計算も可能となるPythonのライブラリNumPyについて勉強する。
NumPyのインポート
NumPyは、npという別名でインポートするのが一般的。import numpy as np
配列
まずは、Numpyの基本となる配列の作り方や使い方について学ぶ。NumPyの配列は、Python標準のリストと似ている点も多いが、ndarrayという独自のクラスのオブジェクトである。
配列の作り方
NumPyで配列を作るには、array()の括弧内にPythonの標準のリストかタプルを指定する。array(リスト) or array(タプル)
import numpy as np
lst = [1,2,3]
arr = np.array(lst)
print(arr)
#結果
[1 2 3]
上の結果で分かるように、NumPyの配列はPython標準のリストと違い、要素はカンマではなくスペースで区切られている。
多次元配列の作り方
1次元の配列と同じようにarray()を使う。arrayの引数に複数のリストを指定することで多次元の配列を作ることができる。import numpy as np
lst1 = [1,2,3]
lst2 = [4,5,6]
arr = np.array([lst1, lst2])
print(arr)
#結果
[[1 2 3]
[4 5 6]]
array()の1つ目の引数が1次元、2つ目の引数が2次元目の配列となる。
多次元配列では、各次元の要素数は同じでければならない。
NumPyの型
NumPyの配列自体は、ndarrayという型である。
import numpy as np
lst = [1,2,3]
arr = np.array(lst)
print(type(arr))
#結果
<class 'numpy.ndarray'>
要素の型
NumPyの配列は、Pythonのリストのように配列の要素に異なる型を混在させることはできない。1つの配列の要素は全て同じ型でなければならない。
要素の型は、dtypeで調べることができる。
>> import numpy as np
>>> arr = np.array([1,2,3])
>>> arr.dtype
dtype('int64')
型を指定して配列を作る
array()でndarrayを生成する時に、引数dtypeを指定することで要素の型を指定することができる。>>> import numpy as np
>>> arr = np.array([1,2,3],dtype=float)
>>> arr
array([ 1., 2., 3.])
便利な配列の作り方
NumPyのndarrayを生成する方法はたくさんあるが、いくつか代表的なものをおさえておく。要素が全て0の配列を作る
要素が全て0の配列を作るには、zeros()を使う。zeros()の書式は、
zeros((配列の行数,配列の列数), dtype, order)
列数を省略すると1次元の配列となる。dtypeは要素の型、orderはメモリの配置を行方向優先(row major)にするか、列方向優先(column major)にするかを指定する。
行方向優先なら、order = 'C'
列方向優先なら、order = 'F'
dtypeとorderは省略可能で、dtypeを省略すると小数値になり、orderを省略すると行方向優先になる。
>>> import numpy as np
>>> arr = np.zeros((2,3))
>>> arr
array([[ 0., 0., 0.],
[ 0., 0., 0.]])
要素が全て1の配列を作る
要素が全て1の配列を作るには、ones()を使う。>>> import numpy as np
>>> arr = np.ones((2,3))
>>> arr
array([[ 1., 1., 1.],
[ 1., 1., 1.]])
範囲を指定して配列を作る
要素の範囲を指定して配列を作るには、arange()を使う。arangeは、Python標準のrangeと同じように開始位置、終了位置、ステップを引数に指定でき、開始位置とステップは省略可能となっている。
また、引数dtypeを指定することで要素の型を指定することもできる。
>>> import numpy as np
>>> arr = np.arange(1,4,1)
>>> arr
array([1, 2, 3])
指定範囲をnum等分した配列を作る
linspace()を使うとstartからstopまでの範囲をnum等分した配列を作ることができる。linspace(start, stop, num, endpoint, retstep, dtype)
startは開始位置、stopは終了位置、numは何分割するかを指定する。endpointではstopを含むか含まないかを指定でき、stop=Falseにするとstopを含まない。retstepにTrueを指定すると、配列と一緒にstep間隔が戻される。
retstepがFalseの場合
import numpy as np
#retstepがFalseの時
arr = np.linspace(0, 10, 5)
print(arr)
#結果
[ 0. 2.5 5. 7.5 10. ]
retstepがTrueの場合
import numpy as np
#retstepがFalseの時
arr = np.linspace(0, 10, 5, retstep=True)
print(arr)
#結果
(array([ 0. , 2.5, 5. , 7.5, 10. ]), 2.5)
以上、
NumPyの基本的な使いかたについて。
今回はここまで。
次回以降は、NumPyで作れる色々な乱数の配列や、配列の操作について勉強する。
NumPyは、Pythonでのデータ分析には欠かせないツールなので、しっかりと身につけたい。
0 件のコメント :
コメントを投稿