Python入門 Numpy基礎③

はじめに

本記事は、前回の「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 = ',')