Pythonで処理を実装している際に数値計算での処理の遅さや重さに悩まされることがあると思います。
そこで活躍するのが数値計算を高速で行う際に便利なライブラリの「NumPy」です。
膨大なデータを使用するデータサイエンスや機械学習やディープラーニングなどを使用した人工知能(AI)の技術でも活用されることもある「NumPy」ライブラリはPythonでの数値計算では重要な要素になります。
本記事は「NumPy」の概要から関数の基本的な使い方を紹介する記事です。
Pythonでの数値計算を効率化するための参考にしてみてください。
目次
1.Python NumPyとは
NumPyの読み方
NumPy は「Numerical Python:ニューメリカル パイソン」の略で読み方は「ナムパイ、ナンパイ」と呼ばれます。
NumPyの概要
NumPyはPythonの数値計算に関する処理をまとめているライブラリです。特に行列や多次元配列の操作に便利な機能と、さまざまな数値計算を行える関数が用意されています。
これを活用することでPython を使用した技術計算やデータ分析を行えるようになるため、データサイエンスや機械学習などの分野でも欠かせない要素として注目のツールです。
NumPyとC言語
PythonのライブラリであるNumPyですが、実はC言語を使用して実装されています。
C言語で実装されている理由はPythonがデータ型が実行時に決まる「動的型付け言語」のため、”計算処理の速度”が遅いからです。
そこで実行前にデータ型を決める「静的型付け言語」であるC言語で作成することでPythonであっても以下のような特徴を実現しています。
処理速度が速い
Pythonは1行ずつコードを読み込み実行する「インタプリンタ言語」のため、計算処理は遅くなりやすいです。しかし、NumPyで使用されているC言語はファイルをPCなどの機械が理解しやすく変換してから実行する「コンパイル言語」のため、Pythonの実装でも高い計算処理速度を実現しています。
NumPy配列による多次元配列の扱い
多次元配列や行列をPythonのリスト型で扱うと動的型付け言語のために処理が重くなりますが、NumPy配列(ndarray型)として扱うことが可能です。
Numpy配列の活用により、PythonではなくC言語に近い扱いになるため、「行列の掛け算」「逆行列」「固有値」などの計算を高速で行えます。また、NumPy には統計関数や乱数生成の機能も充実しているため、さまざまな処理をPythonでも楽に扱うことが可能です。
ブロードキャスティング
ブロードキャスティングとは、NumPyで要素数が一致しないなどで形状が異なる配列間で演算可能にする仕組みで、特定の条件下で配列の算術演算(加算、減算、乗算など)ができます。
例
import numpy as np
b = 2
print(c) |
実行結果
[2, 4, 6] |
これは、スカラー値bが配列aの全要素との掛け算が行われ、その結果が配列cに代入されているという処理です。このとき、配列aとスカラー値bは形状が違いますが、ブロードキャストによりbが[2, 2, 2]という配列として扱われます。
ブロードキャスティングの決まりは以下の通りです。
配列の次元数が少ない方の配列に対して、形状の先頭に 1 を追加
各次元において、サイズが一致するか、どちらかの配列のサイズが1である場合に演算が可能
上記の条件を満たさない場合はエラーが発生
これらを満たせる場合にブロードキャスティングを適用することができます。
以上のようにC言語での実装により、NumPyはPythonの計算処理の遅さを補うことが可能です。
しかし、これらはNumPyの機能を活用によるものなので、Pythonのfor文やwhile文を使用してNumPyで作成した多次元配列や行列の操作を行おうとするとNumPyの利点がなくなるため注意してください。
2.Python NumPyと機械学習
Pythonで実装されることの多い機械学習やディープラーニングといった人工知能(AI)に関する技術において、NumPyは重要視されています。理由は以下の通りです。
高速での膨大な計算処理への適合
行列や多次元配列の計算に便利な機能が豊富
それぞれ詳しく見ていきましょう。
高速での膨大な計算処理への適合
機械学習やディープラーニングなど は、膨大なデータから機械(コンピューター)がデータの持つ法則性や規則性を発見し、分析のために学習していく手法です。
データから法則性や規則性を発見するためにはコンピューターが数学や統計学の知識を使用した膨大な数値計算を行う必要があるため、NumPy の高速な処理は非常にメリットとなります。
行列や多次元配列の計算に便利な機能が豊富
機械学習やディープラーニングなどでデータの分析を行う際にはベクトルや多次元などの行列や多次元配列を使用する計算が必要です。
NumPyにはそういった計算を簡単に行える機能が豊富に用意されています。
例えば、以下のような関数です。
関数名 | 概要 |
---|---|
dot() | 行列積 |
sum() | 配列の要素合計値の算出 |
max() | 配列の要素最大値の算出 |
min() | 配列の要素最小値の算出 |
reshape() | 任意の形状への配列変換 |
concatenate() | 指定した軸での配列結合 |
transpose() | 配列の順番入れ替え |
機械学習で使用する数学や統計学の知識は必要になりますが、うまく使いこなすことで他のプログラミング言語に比べて楽な実装ができます。
関連記事
機械学習と深層学習(ディープラーニング)の違い|基礎から活用例をわかりやすく紹介
3.Python NumPyを使うための準備
Python NumPyのインストール
Pythonで「NumPy」を使用するためにはインストールが必要です。具体的にはPythonをインストールした環境でコマンドプロンプトまたはターミナルを開いて以下のコマンドを実行することでインストールができます。
python -m pip install numpy |
コマンドを実行後に以下のようなメッセージが表示され、最後に「Successfully installed numpy-{バージョン番号}」が表示されていれば、インストール完了です。
Collecting numpy Downloading numpy-2.2.4-cp313-cp313-win_amd64.whl.metadata (60 kB) Downloading numpy-2.2.4-cp313-cp313-win_amd64.whl (12.6 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 12.6/12.6 MB 10.5 MB/s eta 0:00:00 Installing collected packages: numpy Successfully installed numpy-2.2.4 |
Python NumPyのインポート
次はNumPyをプログラムのコード内で使用できるようにする方法になります。方法は簡単で以下のようにNumPyを使用したいPythonファイルでインポート処理を記載すればOKです。
import numpy |
もし、毎回「numpy」と記載するのが面倒な場合は以下のように「as」を使用した略称を登録することもできます。
import numpy as np |
これをすることで「numpy」を「np」としてコード内で使用することができるので、活用してみてください。
Python NumPyが使えない場合
前述のインポート処理を記載したファイルを実行した際に以下のようなエラーが発生する場合があります。
Traceback (most recent call last): File "C:\Users\club8\Downloads\script3.py", line 1, in <module> import numpy as np ModuleNotFoundError: No module named 'numpy' |
このエラーが発生した際にはまず、実行したPythonファイルを実行した環境とインストールした環境が同じ環境であるかを確認してください。Pythonは仮想環境を使用して、1台のPCに複数の環境を用意することもあるので、インストールを行っていない環境である可能性があります。
確認方法は実行した環境で以下を実行するだけです。
python -m pip list |
実行すると以下のようにインストール済みのライブラリが一覧表示されます。
Package Version ------------ ------- blinker 1.9.0 click 8.1.8 colorama 0.4.6 Flask 3.1.0 itsdangerous 2.2.0 Jinja2 2.10 MarkupSafe 3.0.2 pip 25.0.1 Werkzeug 3.1.3 |
ここに「numpy」がない場合はインストールができていない環境ということになるため、実行できないのは正常です。
もし、インストールされているのに実行できなかった場合は以下を行いしましょう。
numpyのスペルミスがないかの確認
アンインストールと再インストール
Python環境の再構築
これらを行っても使用できない場合はPython公式サイト、Numpy公式サイトなどで不具合の発生などがないか確認してみてください。
関連記事
Pythonインストール方法(Mac・Linux・Windows)ダウンロードから実行方法まで解説
【2025年版】Pythonの最新バージョン|新機能やバージョンの選び方、インストール方法を解説
4.Python NumPyでよく使用する関数一覧
ここではよく使用する関数をサンプルコードとともに紹介していきます。
array()
ndarray配列を作る際に使用される関数でPythonのリスト型やタプル型を使用した配列や行列を作成することが可能です。
使用例をサンプルコードとともに見ていきましょう。
【配列の作成】
import numpy as np
list = np.array([1, 2, 3, 4])
|
実行結果
[1 2 3 4] |
【行列の作成】
import numpy as np
gyoretu = np.array(([1,2,3,4], [5,6,7,8], [9,10,11,12]))
|
実行結果
[[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]] |
このようにarray関数の引数にリスト型の値を設定すると「配列」、リスト型とタプル型の組み合わせで「行列」として設定することができます。
また、こちら以外にも以下のような関数でも定義可能です。
【zeros()】
すべての要素を0で定義したい場合に使用
# 配列の場合は数値型で指定 zeros1 = np.zeros(4)
zeros2 = np.zeros((3, 4))
|
実行結果
[0. 0. 0. 0.]
[0. 0. 0. 0.] [0. 0. 0. 0.]] |
【ones()】
すべての要素を1で定義したい場合に使用
# 配列の場合は数値型で指定 ones1 = np.ones(5)
ones2 = np.ones((4, 5))
|
実行結果
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.] [1. 1. 1. 1. 1.] [1. 1. 1. 1. 1.]] |
【full()】
すべての要素を指定の数値で定義したい場合に使用
# 配列の場合は要素の数が先で指定の数値が後で指定 full1 = np.full(4, 2)
full2 = np.full((3, 4), 5)
|
実行結果
[2 2 2 2]
[5 5 5 5] [5 5 5 5]] |
【eye()】
対角線上の要素を1にした行列を定義したい場合に使用
# 行列の数を数値で指定 eye = np.eye(6)
|
実行結果
[[1. 0. 0. 0. 0. 0.] [0. 1. 0. 0. 0. 0.] [0. 0. 1. 0. 0. 0.] [0. 0. 0. 1. 0. 0.] [0. 0. 0. 0. 1. 0.] [0. 0. 0. 0. 0. 1.]] |
【arange()】
等間隔の要素が格納された配列を定義したい場合に使用
# 終わりの数字を指定 arange1 = np.arange(10)
arange2 = np.arange(5, 15)
arange3 = np.arange(10, 100, 20)
print(arange2) print(arange3) |
実行結果
[0 1 2 3 4 5 6 7 8 9] [ 5 6 7 8 9 10 11 12 13 14] [10 30 50 70 90] |
定義したい内容に適した関数を使用すると良いでしょう。
append()
append() 関数は、配列の末尾に値を追加し、既存の配列を拡張する際に使用されます。
# 追加前の配列定義 array = np.array([1,3,5])
append = np.append(array, [7, 9])
|
実行結果
[1 3 5 7 9] |
concatenate()
concatenate() 関数は、指定した軸で配列を結合でき、複数の配列を一つにまとめることが可能です。
# 結合前の配列定義 array1 = np.array([1, 2, 3]) array2 = np.array([4, 5, 6])
concatenate = np.concatenate([array1, array2])
|
実行結果
[1 2 3 4 5 6] |
where()
where() 関数は、指定した条件に当てはまる要素のインデックスを取得する際に使用されます。
# 処理前の配列定義 array = np.array([0, 1, 2, 3])
where = np.where(array > 2)
|
実行結果
[3] |
mean()
mean() 関数は、配列の平均値を計算でき、計算データの中心傾向を確認する際に役立つ関数です。返り値はタプルで、各次元に対応するインデックスの配列を含みます。また、条件式と共に x, y 引数を指定することで、条件に応じて値を選択することも可能です。
# 処理前の配列定義 array = np.array([15, 25, 35, 45])
mean = np.mean(array)
|
実行結果
30.0 |
sum()
sum() 関数は、配列の合計値を計算でき、データの総量を確認する際に使用されます。
# 処理前の配列定義 array = np.array([12, 24, 36, 48])
sum = np.sum(array)
|
実行結果
120 |
max()
max() 関数は、配列(データ)内の最大値を確認することができる関数です。
# 処理前の配列定義 array = np.array([12, 24, 36, 48])
max = np.max(array)
|
実行結果
48 |
min()
min() 関数は、先ほどとは逆に配列(データ)内の最小値を確認することができる関数になります。
# 処理前の配列定義 array = np.array([12, 24, 36, 48])
min = np.min(array)
|
実行結果
12 |
reshape()
reshape()関数は配列の形状変換で使用される関数です。
例えば、1次元配列から2次元の行列への変換、その逆の操作ができます。この時、変換前と変換後の要素数は同じでないとならないので注意です。また、-1を指定すると、他の次元から自動的に要素数を計算します。
# 処理前の配列定義 array = np.array([1, 2, 3, 5, 7, 9, 11, 13])
reshape = array.reshape(2, 4)
|
実行結果
[[ 1 2 3 5] [ 7 9 11 13]] |
dot()
dot()関数は配列の内積や行列積の計算で使用される関数になります。
機械学習などではデータから算出したベクトル配列や行列をもとにパラメータ更新を行う際に使用される機能です。
# 処理前の配列定義 array1 = np.array([2, 4, 6]) array2 = np.array([3, 6, 9])
dot_result = np.dot(array1, array2)
|
実行結果
84 |
linspace()
linspace()関数は、指定範囲内で等間隔の数値生成が可能で、初期値と最終値を含む等間隔の点を生成します。データの視覚化やテストデータ生成が主な使用用途になります。
# 数値の生成(初期値, 最終値, 間隔) linspace = np.linspace(0, 2, 5)
|
実行結果
[0. 0.5 1. 1.5 2. ] |
random()
random()関数は名称の通り乱数の生成が可能な関数です。ランダムデータの生成やテスト時の初期値設定などで使用されます。
# 乱数の生成 random = np.random.rand(10)
|
実行結果
[0.26893541 0.45979646 0.06355986 0.94092072 0.29399542 0.98154568 0.64882172 0.80383396 0.42690543 0.05864778] |
sort()
sort()関数も名称通り配列の要素の降順と昇順を並べ替える関数です。使用したデータや計算したデータの整理などをする際に重宝します。
# 処理前の配列定義 array = np.array([6, 2, 8, 10])
sort_result = np.sort(array)
|
実行結果
[ 2 6 8 10] |
関連記事
Python配列完全ガイド|初期化・追加・操作・要素数・二次元化から配列操作・連想配列まで徹底解説
Pythonライブラリとは?使い方や調べ方、おすすめのライブラリなどわかりやすく解説
5.まとめ
本記事はPythonの数値計算ライブラリ「NumPy」の概要とよく使用する関数を中心に紹介しました。数値計算の処理に不安があるPythonでデータ分析や人工知能などの処理を行う際には欠かせないライブラリです。
データサイエンスや機械学習などで使用されている数学や統計学の知識とNumPyの各関数の処理を照らし合わせることでPythonでの開発を効率化することが期待できます。データ分析に関する知識の学習難易度は高いですが、PythonやNumPyの学習難易度は高くないので着実に身に着けていきましょう。
本記事が皆様にとって少しでもお役に立てますと幸いです。
「フリーランスボード」は、数多くのフリーランスエージェントが掲載するITフリーランスエンジニア・ITフリーランス向けの案件・求人を一括検索できるサイトです。
開発環境、職種、単価、稼働形態、稼働日数など様々な条件から、あなたに最適なフリーランス案件・求人を簡単に見つけることができます。
単価アップを目指す方や、自分の得意なスキルを活かせる案件に参画したい方は、ぜひ「フリーランスボード」をご利用ください。
自身に最適なフリーランスエージェントを探したい方はこちらよりご確認いただけます。