numpyの使い方

import numpy as np
x=np.array([1,2,3])
x
> array([1, 2, 3])


#行列のサイズ、ベクトルのサイズ
x.shape
>(3,)

#xの次元数を見る
x.ndim
>1

y=np.array([
            [1,2,3],
            [4,5,6],
            [7,8,9]
])
y
>array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

y.ndim
>2

#numpy.ndarrayの形状(各次元のサイズ)は属性shapeでタプルで取得可能。
y.shape
>(3, 3)

#平均
y.mean()
>5.0

#列の平均
y.mean(axis=0)
>array([4., 5., 6.])

#行の平均
y.mean(axis=1)
>array([2., 5., 8.])

#0で行列を埋める
np.zeros((3,3))
>array([[0., 0., 0.],
       [0., 0., 0.],
       [0., 0., 0.]])

#分散
y.var()
>6.666666666666667

#標準偏差
y.std()
>2.581988897471611

分散とは?

データの散らばりの度合いを表す値のこと。
偏差(それぞれの数値と平均値の差)を二乗し、その平均を取る。

標準偏差とは?

対象となるデータのバラつきの大きさを示す指標のこと。
「s」や「σ」で表される。計算方法は、標準偏差=√分散。

x=np.array([
            [2,3],
            [1,5],
            [3,1]
])

#転置(行と列を入れ替える)
x.T
>array([[2, 1, 3],
       [3, 5, 1]])

#行列積
np.dot(x,x.T)
>array([[13, 17,  9],
       [17, 26,  8],
       [ 9,  8, 10]])

行列の四則演算

array_1 = np.array([[1, 2], [3, 4], [5, 6]])
array_2 = np.array([[7, 8], [9, 10], [11, 12]])

配列同士の四則演算
対応する値同士を計算する

array_1 + array_2
array_1 – array_2
array_1 * array_2
array_1 / array_2

配列の値を累乗
array_1 ** 2

配列の値を平方根
np.sqrt(array_1)

e を底とする 指数関数 e^x の値を返す
array = [-1,0,1,2]
np.exp(array)
>array([0.36787944, 1., 2.71828183, 7.3890561 ])

行列とは?

横(行)と縦(列)方向の並びからなる2次元データ。
行列のメリットは、多元連立方程式を1本の式で表現・計算できる。
変数が3つ以上の難しい計算式も簡単に解ける。

AX = B
X = A^-1 * B
A^-1 = Aの逆行列

例:冷蔵庫
電気代、収納スペース、サイズ、重量、カラー、操作性、販売量

numpy 行列 形状確認 スライス 選択 抽出

import numpy as np
np.array([[1, 2], [3, 4], [5, 6]])

array.shape[0]
>3

(2,3)行列に変換
array.reshape(2,3)
>array([[1, 2, 3],
       [4, 5, 6]])

1列に変換
array.reshape(-1,1)
>array([[1],
       [2],
       [3],
       [4],
       [5],
       [6]])

多次元配列を一次元配列に変換
array.ravel()
>array([1, 2, 3, 4, 5, 6])

array.ravel().shape
>(6,)

行列の抽出

import numpy as np
array = np.array([[1, 2], [3, 4], [5, 6]])

1行目を抽出
array[0]
>array([1, 2])

2行目を抽出
array[1]
>array([3, 4])

2行目以降を抽出
array[1:]
>array([[3, 4],
       [5, 6]])

2行目までを抽出
array[:2]
>array([[1, 2],
       [3, 4]])

3行1列の値を抽出
array[2,0]
>5

2列目を全て抽出
array[:,1]
>array([2, 4, 6])

条件による抽出

import numpy as np
array = np.array([[1, 2], [3, 4], [5, 6]])

array > 4
>array([[False, False],
       [False, False],
       [ True,  True]])

array[array > 4]
>array([5, 6])


配列の結合 vstack hstack

vstackは縦方向、hstackは横方向
import numpy as np array_1 = np.array([[1, 2], [3, 4], [5, 6]]) array_2 = np.array([[7, 8], [9, 10], [11, 12]]) np.vstack([array_1, array_2]) >array([[ 1, 2], [ 3, 4], [ 5, 6], [ 7, 8], [ 9, 10], [11, 12]]) np.hstack([array_1, array_2]) >array([[ 1, 2, 7, 8], [ 3, 4, 9, 10], [ 5, 6, 11, 12]])

コメント

タイトルとURLをコピーしました