機械学習基礎理論独習

誤りがあればご指摘いただけると幸いです。数式が整うまで少し時間かかります。リンクフリーです。

勉強ログです。リンクフリーです
目次へ戻る

【Python実装】NumPyの基礎

私が忘れるかもしれないことをまとめていきます。

次元の変換

reshapeメソッドを使う以外にも以下のような方法がある。

import numpy as np
a = np.array([1, 2, 3])
# a[:,np.newaxis]はa.reshape(3,1)と同じ
# a[:,np.newaxis]はa[:,None]とも書ける
a[:,np.newaxis]
a.reshape(3,1)

f:id:olj611:20210630221353p:plain

行を足しわせる、列を足し合わせる

np.sum()メソッドを使う

行を足しわせる、列を足し合わせるイメージ
f:id:olj611:20210429193652p:plain

import numpy as np

c = np.array([[1, 2, 3],
              [4, 5, 6]])
# 行を足し合わせる時はaxis=0
print("行の足し合わせ")
print(np.sum(c, axis=0).reshape(-1,3))

# 列を足し合わせる時はaxis=1
print("列の足し合わせ")
print(np.sum(c, axis=1).reshape(2,-1))

f:id:olj611:20210429150405p:plain

行列のサイズを取得

shapeをつかえばよい。

import numpy as np

c = np.array([[1, 2, 3],
              [4, 5, 6]])

#.shapeはタプルである
print("c.shape: {}".format(c.shape))
print("c.shape[0]: {}".format(c.shape[0]))
print("c.shape[1]: {}".format(c.shape[1]))

f:id:olj611:20210429151609p:plain

クラスの確認

typeメソッドを使えばよい。

import numpy as np

c = np.array([[1, 2, 3],
              [4, 5, 6]])

print("type(c): {}".format(type(c)))

f:id:olj611:20210429152144p:plain

次元の確認

ndimを使えばよい。

import numpy as np

c = np.array([[1, 2, 3],
              [4, 5, 6]])

print("c.ndim: {}".format(c.ndim))

f:id:olj611:20210429152200p:plain

ブロードキャスト

例えば配列の要素同士の加算を行う時、それぞれの形状(shape)が合致していない場合、
合致するように計算してくれる機能です。

ルール1.
ブロードキャスト対象の配列の中で、次元数(ndim)が異なる時は
shapeの先頭に1を入れることで調整する

ルール2.
計算処理に用いることのできる配列は、各次元の要素数が、
最も大きい値に等しい、もしくはちょうど1となっているようなものである。

ルール3.
出力される配列のshapeは調整されたshapeのそれぞれの次元において
最も要素数の多いものに合わせられる

ルール4.
素数が1となっている次元の軸については、値はすべて同じものが繰り返される

1次元配列のshape

1次元配列のshapeは(R,)のように出力されます。

import numpy as np

a = np.array([1, 2, 3, 4, 5, 6])

print("a.shape: {}".format(a.shape))

f:id:olj611:20210429194735p:plain

要素のデータ型

データ型を表現するdtypeという属性があります。

import numpy as np

a = np.array([1, 2, 3])
b = np.array([1, 2, 3], dtype='int32')

print("a.dtype: {}".format(a.dtype))
print("b.dtype: {}".format(b.dtype))

f:id:olj611:20210429195303p:plain

ディープコピーとシャロ―コピー

ディープコピーはcopy()メソッドを使う
シャロ―コピーはview()メソッドを使う


参考文献

Numpy データ処理入門

目次へ戻る