pythonの基礎を備忘録として残しておく
summary
array = np.array([[1, 2, 3],[4, 5, 6]]) # 配列作成
print(array)
print(array.shape) # 行列数
print(array.ndim) # 次元数
print(array.size) # 要素数
print(array.reshape(3, 2)) # 3行2列に
print(array.reshape(-1, 3)) # 3列のみ指定し、行は自動(-1)で
print(array.flatten()) # 1次元に
print(np.arange(10))
print(np.arange(1, 10))
print(np.arange(1, 10, 2))
print(np.zeros(6))
print(np.zeros((2, 3))) # 二重括弧に注意
print(array_1 + array_2) # 各要素の足し算
print(np.append(array_1, array_2)) # 追加
print(array[0]) # 0行目
print(array[0][1]) # 0行1列目
print(array[0, 1]) # 0行1列目
print(array[:, 1]) # 全行1列目
print(array[-1, :]) # 最後の行全列
array = np.arange(9).reshape(3, 3)
print(array)
for i in array: # 行の抽出
print(i)
for i in array.flatten(): # 要素1つづつの抽出
print(i)
print(array+10) # ブロードキャスト
print(array*2)
print(array/2)
array_1 = np.arange(9).reshape(3, 3)
array_2 = np.arange(3).reshape(3, 1)
print(array_1 + array_2) # ブロードキャスト
print(np.dot(array_1, array_2)) # 内積
print(np.sum(array, axis = 0)) # 行方向の足し算
print(np.sum(array, axis = 1)) # 列方向の足し算
numpyのインポート
import numpy as np
1. 配列
配列の基本操作
array = np.array([[1, 2, 3],[4, 5, 6]]) # 配列作成
print(array)
print(array.shape) # 行列数
print(array.ndim) # 次元数
print(array.size) # 要素数
print(array.reshape(3, 2)) # 3行2列に
print(array.reshape(-1, 3)) # 3列のみ指定し、行は自動(-1)で
print(array.flatten()) # 1次元に
# 出力
[[1 2 3]
[4 5 6]]
(2, 3)
2
6
[[1 2]
[3 4]
[5 6]]
[[1 2 3]
[4 5 6]]
[1 2 3 4 5 6]
np.arange関数による配列作成
print(np.arange(10))
print(np.arange(1, 10))
print(np.arange(1, 10, 2))
# 出力
[0 1 2 3 4 5 6 7 8 9]
[1 2 3 4 5 6 7 8 9]
[1 3 5 7 9]
np.zeros関数による配列作成
print(np.zeros(6))
print(np.zeros((2, 3)))
# 出力
[0. 0. 0. 0. 0. 0.]
[[0. 0. 0.]
[0. 0. 0.]]
np.random.rand関数による配列作成。直前に、np.random.seed = *** 指定で再現性のある乱数を得る。
print(np.random.rand(3))
print(np.random.rand(2, 2))
# 出力
[0.17272856 0.47712631 0.51327601]
[[0.89263947 0.86838467]
[0.33546726 0.56882862]]
要素の追加
array_1 = np.array([1, 2, 3])
array_2 = np.array([4, 5, 6])
print(array_1 + array_2) # 足し算では各要素が足されるだけ
print(np.append(array_1, array_2)) # 追加はnp.append関数を使う
# 出力
[5 7 9]
[1 2 3 4 5 6]
要素の参照
array = np.arange(9).reshape(3, 3)
print(array)
print(array[0]) # 0行目
print(array[0][1]) # 0行1列目
print(array[0, 1]) # 0行1列目
print(array[:, 1]) # 全行1列目
print(array[-1, :]) # 最後の行全列
# 出力
[[0 1 2]
[3 4 5]
[6 7 8]]
[0 1 2]
1
1
[1 4 7]
[6 7 8]
for 文での要素参照
array = np.arange(9).reshape(3, 3)
print(array)
for i in array: # 行の抽出
print(i)
for i in array.flatten(): # 要素1つづつの抽出
print(i)
# 出力
[[0 1 2]
[3 4 5]
[6 7 8]]
[0 1 2]
[3 4 5]
[6 7 8]
0
1
2
3
4
5
6
7
8
ブロードキャスト(配列、スカラー)
array = np.arange(9).reshape(3, 3)
print(array)
print(array+10)
print(array*2)
print(array/2)
# 出力
[[0 1 2]
[3 4 5]
[6 7 8]]
[[10 11 12]
[13 14 15]
[16 17 18]]
[[ 0 2 4]
[ 6 8 10]
[12 14 16]]
[[0. 0.5 1. ] # 割り算を行うとFloat型になる
[1.5 2. 2.5]
[3. 3.5 4. ]]
ブロードキャスト(配列、配列)
array_1 = np.arange(9).reshape(3, 3)
array_2 = np.arange(3).reshape(3, 1)
print(array_1)
print(array_2)
print(array_1 + array_2)
# 出力
[[0 1 2]
[3 4 5]
[6 7 8]]
[[0]
[1]
[2]]
[[ 0 1 2]
[ 4 5 6]
[ 8 9 10]]
行列間の加減算
array_1 = np.arange(9).reshape(3, 3)
array_2 = np.arange(0, 90, 10).reshape(3, 3)
print(array_1)
print(array_2)
print(array_1 + array_2)
# 出力
[[0 1 2]
[3 4 5]
[6 7 8]]
[[ 0 10 20]
[30 40 50]
[60 70 80]]
[[ 0 11 22]
[33 44 55]
[66 77 88]]
行列の内積
array_1 = np.array([[0, 1],[2, 3]])
array_2 = np.array([[4, 5],[6, 7]])
print(array_1)
print(array_2)
print(np.dot(array_1, array_2))
# 出力
[[0 1]
[2 3]]
[[4 5]
[6 7]]
[[ 6 7] # 0*4+1*6 0*5+1*7
[26 31]] # 2*4+3*6 2*5+3*7
行方向・列方向の処理
array = np.array([[0, 1, 2], [3, 4, 5]])
print(array)
print(np.sum(array))
print(np.sum(array, axis = 0))
print(np.sum(array, axis = 1))
# 出力
[[0 1 2]
[3 4 5]]
15
[3 5 7]
[ 3 12]