- アレイの基礎
- '[x1,x2,...,]'がベクトルで、これの入れ子構造が、多次元ベクトル
- numpyのアレイは、これを「numpyのarray」という取扱い形式に乗せたもの
# まず、入れ子ベクトルを作り
v1 = [1,2,3]
m1 = [v1,v1]
a1 = [m1,m1,m1]
# numpy arrayにする
V1 = np.array(v1)
M1 = np.array(m1)
A1 = np.array(a1)
V1
Out[112]: array([1, 2, 3])
M1
Out[113]:
array([[1, 2, 3],
[1, 2, 3]])
A1
Out[114]:
array([[[1, 2, 3],
[1, 2, 3]],
[[1, 2, 3],
[1, 2, 3]],
[[1, 2, 3],
[1, 2, 3]]])
Out[115]: 2
V1.ndim
Out[116]: 1
V1.shape
Out[117]: (3,)
len(V1)
Out[118]: 3
M1.ndim
Out[119]: 2
M1.shape
Out[120]: (2, 3)
len(M1)
Out[121]: 2
A1.ndim
Out[122]: 3
A1.shape
Out[123]: (3, 2, 3)
len(A1)
Out[124]: 3
# 1次元グリッド
# 0始まりの整数列(n-1)までのn個の整数
# + .0 は浮動小数点への型変換
n = 10
g1 = arange(n) + .0
g1
# [0,1]に範囲変換
g1_1 = g1/max(g1)
g1_1
# それらしい関数を使ってもよい
g1_1_1 = np.linspace(0,1,n)
g1_1_1
# 任意範囲
a = -3
b = 1
g1_2 = np.linspace(a,b,n)
g1_2
g1_2
array([-3. , -2.55555556, -2.11111111, -1.66666667, -1.22222222,
-0.77777778, -0.33333333, 0.11111111, 0.55555556, 1. ])
# 1次元グリッドを作る
g1 = np.linspace(0,1,n)
# 2次元化する
# 2次元アレイを二つ作る。x座標を納めたアレイとy座標を納めたアレイ
g2_x,g2_y = meshgrid(g1, g1, sparse=True)
z = g2_x + g2_y * 2
mp.pyplot.contourf(g1,g1,z)
d = [2,3,4]
a1 = np.array(repeat(0.,prod(d))).reshape(d)
a1
Out[179]:
array([[[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]],
[[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]]])
np.zeros(d)
Out[180]:
array([[[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]],
[[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]]])
np.ones(d)
Out[181]:
array([[[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.]],
[[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.]]])
np.diag([1,2,3])
Out[185]:
array([[1, 0, 0],
[0, 2, 0],
[0, 0, 3]])
np.diag(repeat(1.,3))
Out[183]:
array([[ 1., 0., 0.],
[ 0., 1., 0.],
[ 0., 0., 1.]])
np.eye(3) # これでもOK
Out[184]:
array([[ 1., 0., 0.],
[ 0., 1., 0.],
[ 0., 0., 1.]])
np.diag([1,2,3],k=1)
Out[187]:
array([[0, 1, 0, 0],
[0, 0, 2, 0],
[0, 0, 0, 3],
[0, 0, 0, 0]])
np.diag([1,2,3],k=-1)
Out[188]:
array([[0, 0, 0, 0],
[1, 0, 0, 0],
[0, 2, 0, 0],
[0, 0, 3, 0]])
np.diag([1,2,3],k=-2)
Out[189]:
array([[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[1, 0, 0, 0, 0],
[0, 2, 0, 0, 0],
[0, 0, 3, 0, 0]])