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]])
コメント