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
-
NumPyで行列の逆行列を求める(Python)0306
-
NumPy:行列の掛け算(乗算)0751
-
NumPy:ベクトルの長さ(絶対値、ノルム)を求める03685
-
NumPy:ベクトルを単位ベクトルに正規化する012220
-
NumPy:行列の固有値と固有ベクトルを求める0281
-
NumPy:データの中央値をmedianで求める01905
-
データの最頻値をNumPyで求める08794
-
NumPy:転置行列を求める0335