💭

【初心者向け】Numpyの関数その1(配列の生成)

2025/01/30に公開

Pythonでデータ分析や機械学習を行う上で、NumPyは欠かせないライブラリです。NumPyは、多次元配列を効率的に操作するための様々な機能を提供し、Pythonでの数値計算を高速化します。

本記事では、NumPyでよく使われる関数とその応用について、初心者にも分かりやすく解説します。配列の生成、操作、演算、そしてNumPyの強力な機能であるブロードキャストまで、NumPyの基礎を網羅的に学ぶことができます。

NumPyをマスターすることで、Pythonでのデータ分析がよりスムーズになり、より高度な処理も実現できるようになります。NumPyの知識は、データサイエンスの分野で活躍するために必須のスキルと言えるでしょう。

何回かに分けて、Numpyの基礎的な関数を紹介します。
第1回目の今回は、配列の生成に関する関数を紹介します。

NumPy配列の生成

array(): リストやタプルから配列を生成

a = np.array([0, 1, 2])
a

array([0, 1, 2])

zeros(), ones(), full(): 指定した値で配列を初期化

b = np.zeros([2, 3]) # ゼロで埋めた行列を返します
b

array([[0., 0., 0.],
[0., 0., 0.]])

c = np.ones([2, 3]) # 1で埋めた行列を返します
c

array([[1., 1., 1.],
[1., 1., 1.]])

d = np.full([2, 3], 5) # 最後の引数の値で埋めた行列を返します
d

array([[5, 5, 5],
[5, 5, 5]])

eye(): 単位行列を生成

e = np.eye(3) # 3×3の単位行列
e

array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])

arange(): 等間隔の数列を生成

f = np.arange(2, 8, 3) # 2から 8の手前までの 3つめの値
f

array([2, 5])

linspace(): 指定した範囲で等間隔の数列を生成

g = np.linspace(2, 12, 8) # 2から 12までの間を8つに等分した値
g

array([ 2. , 3.42857143, 4.85714286, 6.28571429, 7.71428571,
9.14285714, 10.57142857, 12. ])

random.default_rng(): 乱数生成

import random
h = np.random.default_rng()
print(h.random((4,2))) # 4行2列の0~1の間の乱数
print(h.integers(1,10,size=(4,2))) # 4行2列の指定した整数(1~10)の間の乱数
print(h.uniform(0.0,5.0,size=(4,2))) # 4行2列の指定した小数値(0.0~5.0)の間の乱数
print(h.standard_normal(size=(4,2))) # 4行2列の標準正規分布(平均0、分散1)の乱数
print(h.normal(50, 10, size=(4,2))) # 4行2列で平均50標準偏差10の正規分布の乱数

[[0.64060079 0.44669193]
[0.58101998 0.95234094]
[0.5739211 0.39666532]
[0.0120901 0.27797047]]

[[1 7]
[3 1]
[3 3]
[1 3]]

[[4.27188915 4.61529725]
[4.76003271 1.59407101]
[1.17465737 1.93573178]
[3.51244365 4.19950623]]

[[-2.11920411 -0.15947338]
[-0.50887931 0.69982422]
[-0.40187981 0.90895158]
[-0.32791499 -0.07486009]]

[[40.56203687 64.20988318]
[40.58711636 37.80441862]
[57.19604699 51.10317609]
[58.06375823 41.01228926]]

diff(): 差分を計算

# 1次元配列を作成
arr = np.array([1, 5, 2, 8, 3])

# diff() 関数で差分を計算
diff_arr = np.diff(arr)

# 結果を表示
print(diff_arr)

[ 4 -3 6 -5]

Discussion