はじめに
本記事は、前回の「Numpy基礎②」の続きです。
今回は、Numpyにおける各種演算に関して記述します。内容に関しては目次を参照ください。
各種演算
numpy.ndarrayに対して、あらゆる演算が可能です。
import numpy as np
array_1 = np.array([[1, 2], [3, 4], [5, 6]])
array_2 = np.array([[7, 8], [9, 10], [11, 12]])
print(array_1)
print(array_2)
# [[1 2]
# [3 4]
# [5 6]]
# [[ 7 8]
# [ 9 10]
# [11 12]]
四則演算
array_1 + array_2
# array([[ 8, 10],
# [12, 14],
# [16, 18]])
array_1 - array_2
# array([[-6, -6],
# [-6, -6],
# [-6, -6]])
array_1 * array_2
# array([[ 7, 16],
# [27, 40],
# [55, 72]])
array_1 / array_2
# array([[0.14285714, 0.25 ],
# [0.33333333, 0.4 ],
# [0.45454545, 0.5 ]])
累乗
array_A = np.array([[0, 1], [2, 4]])
array_A ** 2
# array([[ 0, 1],
# [ 4, 16]], dtype=int32)
np.sqrt(array_A)
# array([[0. , 1. ],
# [1.41421356, 2. ]])
指数関数・相対関数
np.exp(array_A)
# array([[ 1. , 2.71828183],
# [ 7.3890561 , 54.59815003]])
np.log10(array_A)
# array([[ -inf, 0. ],
# [0.30103 , 0.60205999]])
各種統計量
様々な統計量を簡単に計算できます。
array = np.random.randint(0, 100, 30)
array
# array([23, 34, 32, 65, 22, 21, 57, 68, 45, 39, 24, 86, 17, 52, 90, 8, 5,
# 97, 86, 82, 10, 62, 29, 11, 30, 71, 58, 94, 42, 85])
合計・平均・分散・標準偏差
np.sum(array)
# 1445
np.mean(array)
# 48.166666666666664
np.var(array)
# 813.2055555555555
np.std(array)
# 28.516759204993043
行方向・列方向の合計
array_a = np.random.randint(0, 10, 15).reshape(3, 5)
array_a
# array([[7, 9, 6, 6, 3],
# [9, 9, 3, 4, 4],
# [1, 3, 9, 5, 1]])
np.sum(array_a, axis=0)
# array([17, 21, 18, 15, 8])
np.sum(array_a, axis=1)
# array([31, 29, 19])
最大値・最小値
np.argmaxでindexを返します。
np.max(array)
# 97
# 最大値のindexを返す
np.argmax(array)
# 17
np.min(array)
# 5
np.argmin(array)
# 16
データ型を指定した配列生成
array = np.random.randint(0, 100, 20, dtype='int32')
array
# array([60, 89, 7, 60, 37, 84, 98, 16, 45, 39, 33, 97, 65, 73, 87, 68, 24,
# 6, 97, 60])
array.dtype
# dtype('int32')
桁数を丸める
array = np.random.randn(100)
array
# array([ 0.27667014, 2.0662199 , 0.54300851, -0.28870264, 1.25925994,
# 0.67878149, -0.86764347, -0.47302355, -1.31819717, 1.22553862,
# 1.14195753, -0.22805564, 0.01193266, 0.81004175, -0.30636008,
# -1.05053528, 0.87736424, -0.75511835, 1.07427654, 0.08156641,
# -0.66514886, -0.14618553, 0.56344724, 1.70738094, 0.37460877,
# -1.02554494, 0.4495583 , 0.15876283, 0.88555844, -2.98993336,
# -0.20845353, 0.33581244, 0.23724821, -0.13053757, 1.2971359 ,
# -0.60432461, -1.14459758, -0.65034937, 0.07137782, -1.95903141,
# 0.72735049, -0.8798282 , 0.09784277, -0.78009329, -1.76946475,
# 0.7358653 , 0.0164563 , -0.60896333, -0.29943042, -0.55965872,
# 0.19685368, 0.26652261, 1.00127745, -1.36282382, 0.62061795,
# 1.43571115, 1.18000927, -1.81322736, -1.08506576, -0.33645733,
# -0.06985805, -1.20272531, -0.48253505, -0.51942381, -1.31416748,
# 2.29975908, -0.30164581, 1.78064368, 0.99924837, -1.41717626,
# 0.42496689, -0.0154583 , 0.79633261, -1.14739829, 0.85316491,
# -0.96187157, 1.38157017, -0.6040889 , 0.45867203, -0.80569564,
# -1.07496781, -0.53045988, 0.35326358, -0.08179988, 0.54333167,
# 0.50278738, 0.56852822, -0.01752105, 1.24968452, 1.7539529 ,
# -0.6289141 , -0.89613433, -1.03760694, -0.14690506, 0.43111328,
# 0.71923033, -0.23050111, 0.15277124, -1.04633296, 0.00402337])
np.round(array, 2)
# array([ 2.19, 0.26, 2.1 , -0.38, 0.46, 1.24, -0.65, 1.36, -0.73,
# 2.39, -0.5 , 0.28, 0.13, -0.16, 0.21, 1.83, 0.67, 0.62,
# 0.35, 1.43, -0.33, 1.73, 0.63, 0.78, -0.01, -0.33, -0.08,
# -0.52, 1.14, -2.5 , 1.89, -0.28, 2.08, 2.05, 0.28, 2.07,
# 0.54, -0.29, 1.26, 0.68, -0.87, -0.47, -1.32, 1.23, 1.14,
# -0.23, 0.01, 0.81, -0.31, -1.05, 0.88, -0.76, 1.07, 0.08,
# -0.67, -0.15, 0.56, 1.71, 0.37, -1.03, 0.45, 0.16, 0.89,
# -2.99, -0.21, 0.34, 0.24, -0.13, 1.3 , -0.6 , -1.14, -0.65,
# 0.07, -1.96, 0.73, -0.88, 0.1 , -0.78, -1.77, 0.74, 0.02,
# -0.61, -0.3 , -0.56, 0.2 , 0.27, 1. , -1.36, 0.62, 1.44,
# 1.18, -1.81, -1.09, -0.34, -0.07, -1.2 , -0.48, -0.52, -1.31,
# 2.3 ])
csvからndarrayを作成
np.genfromtextでcsvを読み込むことが可能です。
recipes = np.genfromtxt('02_recipes.csv', delimiter = ',')