- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- 機械学習/Pythonでデータ分析する次の一歩(数値計算ライブラリー、NumPy編) へ行く。
- 1 (2017-08-29 (火) 12:20:54)
目次 †
はじめに †
NumPyは、数値計算のためのライブラリーです。
機械学習のためのライブラリーであるscikit-learnはNumPyを使いますので、NumPyを少し理解しておかないと、scikit-learnが使えません。
NumPyの基本は、配列です。
NumPyの配列は、numpy.ndarrayクラスで表されます。 n次元配列 (n-dimensional array) という意味です。
配列を作る †
配列は、numpy.arrayで作ります。
import numpy as np a = np.array([1, 2 ,3, 4, 5, 6, 7, 8]) a
array([1, 2, 3, 4, 5, 6, 7, 8])
配列の要素数を調べる †
配列の要素数は、ndarrayオブジェクトのshape属性に格納されています。
a.shape
(8,)
ndarrayオブジェクトのshape属性はタプルなので、数値で取り出すには要素番号を指定します。
a.shape[0]
8
配列の形を変える †
配列の形を変える(例えば、全体の要素数を変えないで二次元配列にする)には、numpy.reshape関数またはnumpy.ndarrayオブジェクトのreshape関数を使います。
numpy.reshape関数の場合は、次のようにします。
np.reshape(a, (2, 4))
array([[1, 2, 3, 4], [5, 6, 7, 8]])
numpy.ndarrayオブジェクトのreshape関数の場合は、次のようにします。
a.reshape((4, 2))
array([[1, 2], [3, 4], [5, 6], [7, 8]])
三次元配列にもできます。
np.reshape(a, (2, 2, 2))
array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
要素数が合わないと、エラーになります。
a.reshape((4, 1))
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-19-7c07ecbec7bf> in <module>() ----> 1 a.reshape((4, 1)) ValueError: cannot reshape array of size 8 into shape (4,1)
要素数に-1を指定すると、配列全体のサイズに合わせて調整してくれます。
a.reshape((4, -1))
array([[1, 2], [3, 4], [5, 6], [7, 8]])
二次元配列の要素を取り出す †
説明のため、二次元配列を用意します。
m = a.reshape((2, -1)) m
array([[1, 2, 3, 4], [5, 6, 7, 8]])
要素を取り出すには、取り出したい要素の行番号と列番号を指定します。
m[0, 1]
2
二次元配列の行を取り出す †
行を取り出すには、行番号に取り出したい行の行番号を指定し、列番号には全てを表す : を指定します。
m[0, :]
array([1, 2, 3, 4])
二次元配列の列を取り出す †
列を取り出すには、行番号に全てを表す : を指定し、列番号には取り出したい列の列番号を指定します。
m[:, 1]
array([2, 6])
二次元配列に行を追加する †
行を追加するには、np.vstack関数に、同じ列数の二次元配列をタプルで指定します。
np.vstack((m, m, m))
array([[1, 2, 3, 4], [5, 6, 7, 8], [1, 2, 3, 4], [5, 6, 7, 8], [1, 2, 3, 4], [5, 6, 7, 8]])
二次元配列に列を追加する †
列を追加するには、np.hstack関数に、同じ行数の二次元配列をタプルで指定します。
np.hstack((m, m, m))
array([[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4], [5, 6, 7, 8, 5, 6, 7, 8, 5, 6, 7, 8]])