LoginSignup
4
1

More than 3 years have passed since last update.

製薬企業研究者がNumPyについてまとめてみた

Last updated at Posted at 2019-12-21

はじめに

NumPyは、ベクトルや行列計算を高速で行うためのライブラリです。
ここでは、NumPyでよく使うメソッドなどについて解説します。
Python3系の使用を想定しています。

インポート

NumPyを使うには、まずライブラリを読み込む必要があります。
慣習的に、npとすることが多いです。

NumPy_1.py
import numpy as np

1次元配列

NumPyでは、リストのような配列を作ることができます。

NumPy_2.py
import numpy as np


np_arr_1 = np.array([1, 2, 5])

print(np_arr_1)
print(type(np_arr_1)) # ndarrayクラス
print(np_arr_1**2) # 各要素を2乗する。


np_arr_2 = np.array([3, 5, 7])

print(np_arr_1 + np_arr_2) # 要素ごとに足し算する。


np_arr_3 = np.arange(10)

print(np_arr_3)

np_arr_3[0:2] = 100
print(np_arr_3)

NumPyは要素同士の計算が簡単にできるのが特徴です。
NumPyを使わずに上記の処理を行おうとすると以下のようになります。

NumPy_3.py
arr_1 = [1, 2, 5]

for i, num in enumerate(arr_1):
    arr_1[i] = num ** 2
print(arr_1)

NumPyの配列では、代入先の要素の値を更新すると、元の配列の値も更新されるので、注意が必要です。
元の配列が更新されないようにするには、copy()メソッドを使用します。

NumPy_4.py
import numpy as np


np_arr_1 = np.array([1, 2, 5])
np_arr_2 = np_arr_1
np_arr_2[1] = 100
print(np_arr_1) # np_arr_1も変更されている。
print(np_arr_2)


np_arr_1 = np.array([1, 2, 5])
np_arr_2 = np_arr_1.copy()
np_arr_2[1] = 100
print(np_arr_1) # np_arr_1は変更されない。
print(np_arr_2)

ある条件を満たす要素のみを取り出すことも可能です。

NumPy_5.py
import numpy as np


np_arr_1 = np.array([1, 2, 5])
print(np_arr_1[np_arr_1 % 2 == 1]) # 奇数の要素のみを取り出す。

NumPyでは「ユニバーサル関数」と呼ばれる、配列の各要素に対する演算結果を返す関数が用意されています。

NumPy_6.py
import numpy as np


np_arr_4 = np.array([-1, 2, -3])
print(np.abs(np_arr_4)) # 各要素の絶対値

np_arr_5 = np.array([1, 9, 25])
print(np.sqrt(np_arr_5)) # 各要素の平方根

NumPyでは、乱数を発生させることもできます。

NumPy_7.py
import numpy as np


np_arr_6 = np.random.randint(0, 10, 5) # 0から9の間の整数をランダムに5個発生させる。
print(np_arr_6)

np_arr_7 = np.random.randint(5) # 0から4までの整数をランダムに1個発生させる。
print(np_arr_7)

importの部分を書き換えることで、より短く簡単に記述することができます。

Numpy_8.py
from numpy.random import randint


np_arr_6 = randint(0, 10, 5)
print(np_arr_6)

np_arr_7 = randint(5)
print(np_arr_7)

2次元配列

2次元配列に関するメソッドは以下のようになります。

NumPy_9.py
import numpy as np


np_arr_8 = np.array([[1, 2, 3], [4, 5, 6]])
print(np_arr_8)
print(np_arr_8[1])
print(np_arr_8[1, 1])
print(np_arr_8.sum())
print(np_arr_8.sum(axis=0)) # 列ごとに計算
print(np_arr_8.sum(axis=1)) # 行ごとに計算
print(np_arr_8.shape)
print(np_arr_8.reshape(3, 2))
print(np_arr_8.T)
print(np.transpose(np_arr_8))
print(np_arr_8.mean()) # 平均
print(np.average(np_arr_8)) # 平均
print(np.max(np_arr_8)) # 最大値
print(np.min(np_arr_8)) # 最小値
print(np.std(np_arr_8)) # 標準偏差
print(np.var(np_arr_8)) # 分散
print(np.argmax(np_arr_8)) # 最大値の要素のインデックス番号
print(np.argmin(np_arr_8)) # 最小値の要素のインデックス番号

まとめ

ここでは、NumPyでよく用いられるメソッドなどを紹介してきました。
マスターするには、実際に使ってみるのが一番の近道です。

参考資料・リンク

プログラミング言語Pythonとは?AIや機械学習に使える?

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1