Pythonで数値計算を行うときによく使われるライブラリ「NumPy(ナンパイ)」の中でも、特によく登場する関数・メソッドについて自分なりにまとめました。
NumPyは配列操作や乱数生成など、データ処理で欠かせない機能がたくさんあります。使い方を整理することで、少しずつ理解を深めていきたいと思います。
※本記事では「関数」と「メソッド」の両方を紹介しています。
- 関数:
np.sum()
のようにnp.
から始まる形式 - メソッド:
array.sum()
のように配列オブジェクトに対して呼び出す形式
どちらも似たような働きをすることが多いです。
sum関数・sumメソッド
配列の合計を求めます。
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
print(np.sum(a)) # 配列全体の合計 → 21
print(a.sum(axis=0)) # 列ごとの合計 → [5 7 9]
print(a.sum(axis=1)) # 行ごとの合計 → [ 6 15]
dtype属性
配列のデータ型を確認できます。
a = np.array([1, 2, 3])
print(a.dtype) # int64などが表示される
astypeメソッド
配列のデータ型を変換します。
a = np.array([1, 2, 3])
b = a.astype(float)
print(b) # [1. 2. 3.]
print(b.dtype) # float64
reshapeメソッド
配列の形状を変更します。
a = np.array([1, 2, 3, 4, 5, 6])
b = a.reshape((2, 3))
print(b)
# [[1 2 3]
# [4 5 6]]
ravelメソッド
多次元配列を1次元に「参照」で変換します。元の配列とメモリを共有するため、変更が反映されることもあります。
a = np.array([[1, 2], [3, 4]])
b = a.ravel()
print(b) # [1 2 3 4]
flattenメソッド
多次元配列を1次元に「コピー」で変換します。元の配列には影響しません。
a = np.array([[1, 2], [3, 4]])
b = a.flatten()
print(b) # [1 2 3 4]
copyメソッド
配列のコピーを作成します。
a = np.array([1, 2, 3])
b = a.copy()
b[0] = 100
print(a) # [1 2 3]
print(b) # [100 2 3]
arange関数
等差数列の配列を作成します。
np.arange(0, 10, 2)
# → [0 2 4 6 8]
random関数(モジュール)
0以上1未満のランダムな値の配列を作ります。
np.random.random((2, 2))
# 例: [[0.1 0.5]
# [0.7 0.3]]
seed関数
乱数の「出発点」を固定します。再現性のある結果を得たいときに使います。
np.random.seed(0)
print(np.random.rand(3))
# 毎回同じ結果 → [0.5488135 0.71518937 0.60276338]
randint関数
指定した範囲の整数乱数を生成します。
np.random.randint(1, 10, size=(2, 3))
# 例: [[3 7 5]
# [2 9 1]]
uniform関数
一様分布に従ったランダムな浮動小数点数を生成します。
np.random.uniform(0, 1, size=5)
# 例: [0.1 0.3 0.8 0.2 0.5]
randn関数
平均0・標準偏差1の正規分布に従うランダム値を生成します。
np.random.randn(3)
# 例: [ 0.1 -0.2 0.3]
zeros関数
すべての要素が0の配列を作成します。
np.zeros((2, 3))
# [[0. 0. 0.]
# [0. 0. 0.]]
ones関数
すべての要素が1の配列を作成します。
np.ones((2, 3))
# [[1. 1. 1.]
# [1. 1. 1.]]
eye関数
単位行列(対角線が1、それ以外が0の正方行列)を作成します。
np.eye(3)
# [[1. 0. 0.]
# [0. 1. 0.]
# [0. 0. 1.]]
full関数
指定した値ですべての要素を埋めた配列を作成します。
np.full((2, 3), 7)
# [[7 7 7]
# [7 7 7]]
linspace関数
開始値と終了値を指定して、等間隔に分割した数値を含む配列を作成します。
import numpy as np
a = np.linspace(0, 1, 5)
print(a)
出力例:
[0. 0.25 0.5 0.75 1. ]
このように、0〜1の間を4つに等分した配列が生成されます。分割数は「区切り」ではなく「要素の数」です。上の例では「5個の要素」が生成されています。
🔸表示がガタガタして見える理由について
NumPyの配列は、見た目を整えるためにスペースで表示幅をそろえる仕組みになっています。
上のように小数第2位まである値(0.25など)があると、それに合わせて他の要素(0. や 0.5 など)の右側にスペースが入って、表示が少しずれて見えることがあります。
これはあくまで表示上の工夫であって、配列の中身そのものに問題があるわけではありません。
見た目をそろえて表示したい場合は、次のように設定することもできます:
np.set_printoptions(precision=2, floatmode='fixed')
print(np.linspace(0, 1, 5))
# → [0.00 0.25 0.50 0.75 1.00]
まとめ
今回まとめた関数やメソッドは、NumPyを使う上でよく出てくるものばかりです。少しずつでも手を動かして、使い方を身につけていけたらと思います。