Irohabook
0
738

NumPy入門:基本的な使い方(関数、配列、ベクトル、行列など)

三角関数

sinはsin、cosはcosで求めます。引数の単位はラジアンです。

入力

import numpy as np

a = np.sin(0)
b = np.cos(0)
c = np.tan(0)
d = np.sin([0, 3.14, 1.57079])

print(a)
print(b)
print(c)
print(d)

出力

0.0
1.0
0.0
[0.         0.00159265 1.        ]

引数を配列にすると配列が返ります。

逆三角関数

入力

import numpy as np

a = np.arcsin(0)
b = np.arccos(1)
c = np.arctan(0)

print(a)
print(b)
print(c)

出力

0.0
0.0
0.0

統計

平均
中央値
最頻値

配列

配列のシャッフル

random.shuffleで配列をシャッフルします。

入力

import numpy as np

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

print(a)

出力

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

random.shuffleはもとの配列を操作する関数です。

重複度のカウント

ベクトル

ベクトルの内積

ベクトルの内積はinnerで表します。

入力

import numpy as np

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

print(x)

出力

11

実際、4×2+1×3=11です。

異なる次元を引数にするとエラーになります。

入力

import numpy as np

a = np.array([4, 1])
b = np.array([2, 3, 5])
x = np.inner(a, b)

print(x)

出力

Traceback (most recent call last):
  File "numpy/numpy_vector_1.py", line 5, in <module>
    x = np.inner(a, b)
ValueError: shapes (2,) and (3,) not aligned: 2 (dim 0) != 3 (dim 0)

ValueErrorというエラーが出ます。

ノルム
単位ベクトルと正規化

三次元ベクトルの外積

ベクトルの外積(クロス積)はcrossで求めます。

入力

import numpy as np

a = np.array([2, 1, 3])
b = np.array([-1, 3, 2])
x = np.cross(a, b)

print(x)

出力

[-7 -7  7]

三次元のベクトルが二つあるとき、外積はその二つと垂直になります。

行列

零行列

zerosで零行列を作ります。

入力

import numpy as np

p = np.zeros([2, 2])
q = np.zeros([3, 2])
r = np.zeros([3, 3])
s = np.zeros([4, 4])

print(p)
print(q)
print(r)
print(s)

出力

[[0. 0.]
 [0. 0.]]
[[0. 0.]
 [0. 0.]
 [0. 0.]]
[[0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]
[[0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]]


すべての要素が0の行列を零行列といいます。零行列と任意の行列をかけると零行列になります。

単位行列

単位行列はeyeで作ります。

入力

import numpy as np

a = np.eye(2)
b = np.eye(3)
c = np.eye(4)

print(a)
print(b)
print(c)

出力

[[1. 0.]
 [0. 1.]]
[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]
[[1. 0. 0. 0.]
 [0. 1. 0. 0.]
 [0. 0. 1. 0.]
 [0. 0. 0. 1.]]

(n,n)がすべて1、それ以外がすべて0の正方行列を単位行列といいます。単位行列と(同じ次元の)正方行列をかけると、その正方行列になります。

単位行列と行列の乗算

行列のかけ算はnumpyのdotで表します。

入力

import numpy as np

a = np.array([[4, 1], [2, 3]])
i = np.eye(2)
b = np.dot(a, i)
c = np.dot(i, a)

print(b)
print(c)

出力

[[4. 1.]
 [2. 3.]]
[[4. 1.]
 [2. 3.]]

単位行列と[[4, 1], [2, 3]]をかけると[[4, 1], [2, 3]]が出てきます。

転置行列
かけ算

行列式

NumPyのarrayで行列を定義し、linalg.detで行列式を求めます。

入力

import numpy as np

a = np.array([[4, 1], [2, 3]])
d = np.linalg.det(a)
print(a)
print(d)

出力

[[4 1]
 [2 3]]
10.000000000000002

実際の行列式は4×3-1×2=10ですが、10.000…という値が出ています。

逆行列
固有値と固有ベクトル

行列のランク

行列のランクはlinalg.matrix_rankで求めます。

入力

import numpy as np

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

r = np.linalg.matrix_rank(a)
s = np.linalg.matrix_rank(b)

print(r)
print(s)

出力

2
1

[[1, 2], [1, 2]]のランクがきちんと1になっています。

次の記事

NumPy