libro
www.tuyano.com
初心者のためのJupyter入門

numpyによるベクトル・行列の基本 (5/5)

作成:2018-02-03 11:43
更新:2018-02-03 11:43

■行列の操作

行列を操作して新たな行列を取得したりするための機能も色々と揃っています。それらについてまとめておきましょう。


●値の取得
行列に含まれる値の取得は、[ 行 , 列 ] という形でインデクスを指定して取り出します。例えば、a[0, 1] とすれば、行列aの一番左列の上から2番目の値が取り出されます。
m = numpy.array([[1, 2], [3, 4]])
m[0, 1]
 ↓
2

●転置について
行ベクトルを列ベクトルに転置するような場合、「T」というプロパティで取り出すことができます。例えば、こんな具合です。
numpy.matrix( [1, 2, 3] ).T
 ↓
[[1]
[2]
[3]]
もちろん、一般的な行列についても、Tプロパティで転置した行列を得ることができます。例えば、こんな具合です。
numpy.matrix([[1,2,3],[4,5,6],[7,8,9]]).T
 ↓
[[1 4 7]
[2 5 8]
[3 6 9]]

●ベクトルから行列へ
変数 = 《ベクトル》.reshape( ( 行数 , 列数 ) )
ベクトルを一定数ごとに切り分けて行列に変換する機能がnumpyにはあります。reshapeというもので、matrixndarrayインスタンス内のreshapeを呼び出すことで、そのインスタンスのベクトルをリシェイプし行列を作成します。

例えば以下のように実行すると、3×3の行列が得られます。
m = numpy.array(range(9))
m.reshape((3,3))
 ↓
[[0 1 2]
[3 4 5]
[6 7 8]]

●行列からベクトルへ
変数 = numpy.ravel( 行列 )
行列をベクトルに変換するには、ravelというメソッドを使います。引数に行列を指定すると、各行を1つにつなげた形のベクトルを生成して返します。例えばこんな具合です。
numpy.ravel([[0,1],[2,3]])
 ↓
[0 1 2 3]

●行列のセーブ・ロード
numpy.save( ファイル名 ,《オブジェクト》)
numpy.load( ファイル名 )
行列にまとめたデータを読み書きするための機能も用意されています。saveはデータを保存するためのもので、第1引数にファイル名、第2引数に保存するオブジェクトを指定します。loadは保存されたデータを読み込むもので、引数にファイル名を指定してよびだすと、そのデータを読み込み行列オブエクトとして返します。

注意しておきたいのは、「ファイル名は、npyという拡張子を使う」という点です。save時にnpyの拡張子がついていないと、自動的につけて保存されます。
m = numpy.array([numpy.random.randint(100) for i in range(25)])
n = m.reshape((5, 5))

numpy.save('sampledata.npy', n)    # ファイルに保存
m =numpy.load('sampledata.npy')        # ファイルからロード

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

※関連コンテンツ

「初心者のためのJupyter入門」に戻る