ベクトル

ベクトルは基本的に NumPy の一次元配列として作成する。

import numpy as np
a = np.array([1, 1, 2, 3, 5, 8, 13])
b = np.array([1, 4, 9, 16, 25, 36, 49])

a + b
## array([ 2,  5, 11, 19, 30, 44, 62])

a[0] + b[2]
## 10

ベクトルの長さやデータの型などを調べる際に以下のようにする。

a
## array([ 1,  1,  2,  3,  5,  8, 13])

a.size
## 7

a.dtype
## dtype('int64')

ベクトルの結合は NumPy の append メソッドを利用する。

c = np.append(a, b)
c
## array([ 1,  1,  2,  3,  5,  8, 13,  1,  4,  9, 16, 25, 36, 49])

平均値などの基礎統計量を計算するメソッドなど。

a.mean()     # np.mean(a)
## 4.7142857142857144

a.var()      # np.var(a)
## 16.77551020408163

a.sum()      # np.sum(a)
## 33

a.min()      # np.min(a)
## 1

a.max()      # np.max(a)
## 13

2 つのベクトルを縦にまたは横に結合して 2 次元配列に変換するには NumPy の column_stack または row_stack を利用する。

d = np.column_stack((a, b))
d
## array([[ 1,  1],
##        [ 1,  4],
##        [ 2,  9],
##        [ 3, 16],
##        [ 5, 25],
##        [ 8, 36],
##        [13, 49]])

## d[4,0]
## 5

e = np.row_stack((a, b))
e
## array([[ 1,  1,  2,  3,  5,  8, 13],
##        [ 1,  4,  9, 16, 25, 36, 49]])

e[1, 5]
## 36

その他のベクトルの作り方など。

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

x.repeat(3)
## array([1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4])

x.repeat(x)
## array([1, 2, 2, 3, 3, 3, 4, 4, 4, 4])

np.zeros(5)
## array([ 0.,  0.,  0.,  0.,  0.])

np.arange(1,5)
## array([1, 2, 3, 4])

np.arange(1, 10, 3)
## array([1, 4, 7])

np.arange(10, 1, -1)
## array([10,  9,  8,  7,  6,  5,  4,  3,  2])

ベクトルの並べ替えなど。sort はベクトル要素を並べ変えるのに対して、argsort はベクトル要素を並べ替えるためのインデックスを求めている。

y = np.array([1, 43, 23, 32, 55, 11])

y[::-1]
## array([11, 55, 32, 23, 43,  1])

 np.sort(y)
## array([ 1, 11, 23, 32, 43, 55])

np.argsort(y)
## array([0, 1, 2, 3, 4, 5])

y[np.argsort(y)]
## array([ 1, 11, 23, 32, 43, 55])