1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Python初心者】NumPyのよく使う関数・メソッドまとめ

Posted at

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を使う上でよく出てくるものばかりです。少しずつでも手を動かして、使い方を身につけていけたらと思います。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?