Numpy2|行列の作成、要素の抽出、入替え、コピー、型の表示を行う

  • URLをコピーしました!

ここで学習すること

Numpyを用いた行列の作成やデータの抽出の仕方を学習します。

軸の並べ替えやコピーについても学習します。

Numpy行列では横のくくりを行、縦のくくりを列と呼びます。

list型のindex同様に行、列ともに0行目(列目)から始まります。

行列の型を表示する

import numpy as np

list= [[1, 2], [3, 4], [5, 6]]

arr = np.array(list)

.shapeで行列の型を表示できます。

print(arr.shape)

=>

(3, 2)   #3行2列の行列であることを示しています。

行列から値を抽出する

リストと同様にスライス[最初の値: 最後+1の値: ステップ]を用いてインデックスを指定して値の抽出が可能です。

インデックスは0始まりです。スライスは[ ]でくくります。

import numpy as np

arr = [1, 2, 3, 4, 5, 6 ,7]

n = arr[4]     #4番目の抽出

n2 = arr[1:3]   #1番目から2番目の抽出

n3 = arr[: : 2]   #1つ飛ばしで抽出

=>

5

[2, 3]

[1, 3, 5, 7]

多次元の行列から値を抽出する

list = [[1,2],[3,4],[5,6]]

arr = np.array(list)

print(arr)

print(arr[2,1])

=>

[[1 2]

[3 4]

[5 6]]

6

解説

print(arr[2, 1])ではまずprint(arr[2])が実行されます。

0次元軸(最も内側の[])のうち、インデックスが2(3番目)が抽出されます。

=>[5 6]

つぎに[1]が抽出されるのでprint(arr[2, 1])の結果は6となります。

2軸の行列の軸の入れ替え

list = [[1,2],[3,4],[5,6]]

arr = np.array(list)

print(arr)

=>

[[1 2]

[3 4]

[5 6]]

.Tで行と列を入れ替えます。

print(arr.T)

=>

[[1 3 5]

[2 4 6]]

3軸の行列の軸の入れ替え

list =[[[1,2],[3,4],[5,6]],[[11,22],[33,44],[55,66]]]

arr = np.array(list)

print(arr)

=>

[[[ 1  2]

[ 3  4]

[ 5  6]]

.transpose()で3軸の行列の軸の入れ替えが可能です。

arr2=arr.transpose()

print(arr2)

=>

[[11 22]

[33 44]

[55 66]]]

[[[ 1 11]

[ 3 33]

[ 5 55]]

[[ 2 22]

[ 4 44]

[ 6 66]]]

.transpose(2,1,0)では0軸を2軸へ、1軸を1軸へ、2軸を0軸へ入れ替えます。

arr3=arr.transpose(2,1,0)

print(arr3)

=>

[[[ 1 11]

[ 3 33]

[ 5 55]]

[[ 2 22]

[ 4 44]

[ 6 66]]]

行列をつくる

list = [1,2,3,4,5,6,7,8,9,10]

arr=np.array(list)

print(arr)

=>

[ 1  2  3  4  5  6  7  8  9 10]

.reshape(2,5)で2行5列の行列を作成します。

arr2=arr.reshape(2,5)

print(arr2)

=>

[[ 1  2  3  4  5]

[ 6  7  8  9 10]]

一つ目の引数を-1とすると行数は指定せず1列の配列が作れます。

arr3=arr.reshape(-1,1)

print(arr3)

=>

[[ 1]

[ 2]

[ 3]

[ 4]

[ 5]

[ 6]

[ 7]

[ 8]

[ 9]

[10]]

二つ目の引数を‐1とするとこのようになります。

何列になるかわからないけど、とにかく2行の行列を作ります。

arr4=arr.reshape(2,-1)

print(arr4)

[[ 1  2  3  4  5]

[ 6  7  8  9 10]]

行列をならべ変える

arr=np.array([4,2,1,5,8,3,5,8,9])

.sort()で小さい順に並べ変えます。

arr.sort()

print(arr)

sort()は返り値をもたないメソッドであるため、arrを直接書き換えます。

このような処理をip-place処理といいます。

in-place処理ではこのような処理ができません。

arr2=arr.sort()

print(arr2)

=>None

行列をコピーする

arr=np.array([4,2,1,5,8,3,5,8,9])

arr2=arr  

arrを変更するとarr2も変わる

arr3=arr.copy()   

arrを変更してもarr3は変わらない

よかったらシェアしてね!
  • URLをコピーしました!
目次