1. はじめに|NumPyってなに?Pythonでなぜ必要?
Pythonで本格的にデータ分析や機械学習、画像処理などを始めようとしたとき、まず耳にするのが「NumPy(ナムパイ)」というライブラリです。
「え?ナムパイ?なんか名前がかわいいけど、何に使うの?」
そんな風に思った方もいるかもしれませんね。
実はこのNumPy、**Pythonで数値やデータを高速に処理するための“最強ツール”**なんです。
Pythonのリストでは足りない場面がある?
Pythonにはもともと「リスト」や「辞書」といった便利なデータ構造があります。たとえば [1, 2, 3] のように、数字をまとめて扱うのはとても簡単ですよね。
でも――
「このリストのすべての要素を2倍したい」とか、
「2つのリスト同士で計算したい」なんてとき、
標準のリストではちょっと面倒だったり、処理が遅かったりします。
ここでNumPyの出番です。
NumPyは「高速な配列(ndarray)」を使う
NumPyでは、ndarray(エヌディーアレイ)という特別な配列オブジェクトを使って、リストのように見えるデータを一括でサクサク計算できます。
たとえば、Pythonのリストに *2 をするとリストが繰り返されるだけですが、NumPy配列に *2 をすると、すべての要素が2倍されるんです。
しかも、内部的にはC言語で最適化されているので、処理速度がとても速い!
大量のデータを扱うときには、その違いが特にハッキリ出てきます。
データ分析・機械学習の土台となるライブラリ
さらに、NumPyはPandas(データ分析)、Scikit-learn(機械学習)、OpenCV(画像処理)など、**Pythonの代表的なライブラリたちの“土台”**としても使われています。
つまりNumPyがわかると、データ分析・AI・科学計算などの幅広い分野への入り口が一気に開けるというわけです。

NumPyは、Pythonを「計算や分析の得意な言語」にしてくれるスーパーアイテム。
初めてでも大丈夫。この記事で一緒に基本から学んでいきましょう!
2. NumPyのインストールと基本の使い方
ではさっそく、NumPyを使う準備から始めましょう。といっても、やることはとてもシンプル。Pythonが使える環境さえあれば、すぐにNumPyを使い始められます!
NumPyのインストール方法
NumPyは標準ライブラリではないので、最初にインストールが必要です。以下のコマンドをターミナル(またはコマンドプロンプト)に入力してください:
pip install numpy
✅ もしPythonの環境がすでに整っていれば、これだけで完了です!
インストールが成功すると、NumPyがあなたのPython環境で使えるようになります。
NumPyのインポート方法
NumPyを使うには、Pythonのコード内で次のようにインポートします:
import numpy as np
この np という短縮名(エイリアス)は、NumPyを使うときの“お約束”です。多くのチュートリアルやサンプルコードで np.array() のように書かれているのを目にすると思います。
import numpy as np
a = np.array([1, 2, 3])
print(a)
これで、NumPy配列を作って表示することができました!
なぜ np を使うの?
np を使う理由はただひとつ。コードが読みやすくて短く書けるからです。
NumPyはたくさんの関数が用意されているので、毎回 numpy.array() と書いているとちょっと面倒ですよね。
短く書くことで、コードの見通しがよくなり、ミスも減らせます。
補足:Jupyter Notebook でも使えます
もしJupyter Notebookを使っている方は、セルに以下を入力するだけでOKです。
!pip install numpy
import numpy as np

インストールとインポートが済めば、次は配列(ndarray)の作り方とその特徴について学んでいきましょう!
3. ndarrayとは?Pythonリストとの違い
NumPyを語るうえで絶対に外せないのが、ndarray(エヌディーアレイ)という配列オブジェクトです。
これはNumPyが提供する、数値を効率よく扱うための特別な配列なんです。
ndarrayは「計算が得意なスーパー配列」
普段Pythonでデータをまとめるとき、[1, 2, 3] のようなリストを使いますよね。でも、リストには次のような弱点があります:
- データの型がバラバラでもOK(=裏を返せば、型が統一されていない)
- 要素を1つずつループしないと計算できない(速度が遅い)
- 多次元にすると扱いが難しくなる
そこで登場するのが ndarray。これは、
- すべての要素が同じ型
- 計算処理がとても速い
- 多次元でも直感的に扱える
という特徴を持つ、数値計算に特化した配列なんです。
実際に使ってみよう!NumPy配列とPythonリストの違い
import numpy as np
# Pythonのリスト
list_data = [1, 2, 3]
print(list_data * 2) # [1, 2, 3, 1, 2, 3]
# NumPy配列
array_data = np.array([1, 2, 3])
print(array_data * 2) # [2 4 6]
この違い、びっくりしませんか?
リストは繰り返されただけなのに、NumPy配列は全要素が2倍されています。
これはNumPy配列が、**配列全体への演算(ベクトル演算)**をサポートしているからなんです。
多次元配列もカンタン!
Pythonのリストで2次元配列を作ろうとすると、[[1, 2], [3, 4]] のようなネスト構造になりますが、NumPyではこれも一発で扱えます。
matrix = np.array([[1, 2], [3, 4]])
print(matrix.shape) # (2, 2)
NumPy配列は .shape で「形(行数・列数)」をすぐに調べられるのも魅力ですね。

Pythonのリストは「便利だけど計算には弱い」、
NumPyのndarrayは「計算に特化したプロ仕様の配列」。
こう考えると、それぞれの使い分けがイメージしやすくなりますよ。
4. 配列の作成と初期化の方法
NumPyでは、さまざまな方法で配列(ndarray)を作成することができます。
ここでは、基本的な作成方法から、初期値つきの便利な配列の生成方法まで、やさしく紹介していきます!
基本:np.array()でリストから配列を作る
まずは、Pythonのリストを元にNumPy配列を作ってみましょう。
import numpy as np
a = np.array([1, 2, 3])
print(a)
# 出力: [1 2 3]
リストがそのままNumPy配列に変換されましたね。
多次元もOK!
b = np.array([[1, 2], [3, 4]])
print(b)
# 出力:
# [[1 2]
# [3 4]]
このように、入れ子構造のリストを渡すだけで2次元配列も簡単に作れます!
初期化関数で「まっさらな配列」を作る
NumPyでは、「最初はすべて0にしたい」「全部1の配列が欲しい」といった場合に便利な初期化関数が用意されています。
np.zeros(shape):すべて0の配列
zero_array = np.zeros((2, 3))
print(zero_array)
[[0. 0. 0.]
[0. 0. 0.]]
np.ones(shape):すべて1の配列
one_array = np.ones((3, 2))
shape の部分には、配列の行と列の数をタプルで指定します。(行数, 列数) の形ですね。
np.empty(shape):中身は未初期化(超高速!)
e = np.empty((2, 2))
print(e)
これは一見、zeros()やones()と似ていますが、実は中身がランダム(空の状態)です。
計算で上書きするつもりなら、あえてこれを使うことで高速化できます。
np.random.rand():ランダムな数値で配列を作る
rand_array = np.random.rand(2, 3)
print(rand_array)
0.0以上1.0未満 のランダムな値で埋められた配列を作成できます。
引数にはタプルではなく、数値をカンマ区切りで指定します。
1次元〜3次元まで作れる!
どの初期化関数も、次のようにして多次元の配列を作ることができます:
np.zeros((4,))→ 1次元配列np.ones((3, 3))→ 2次元配列(行列)np.empty((2, 3, 4))→ 3次元配列(たとえばカラー画像データなど)

NumPyの配列は「作り方がわかれば、使い方がわかる!」と言えるほど大事な第一歩。
次は、この配列の形状や次元を確認したり、形を変えたりするテクニックを紹介します。
5. 配列の形状や要素の確認・操作
NumPyで配列(ndarray)を扱うとき、「この配列って何次元?」「行と列の数は?」「形を変えたい!」という場面がよくあります。
ここでは、ndarrayの情報確認と変形の基本テクニックをまとめて紹介します!
配列の次元数を調べる:ndarray.ndim
配列が何次元なのかを知りたいときは .ndim を使います。
import numpy as np
a = np.array([1, 2, 3])
b = np.array([[1, 2], [3, 4]])
print(a.ndim) # 1
print(b.ndim) # 2
✅ 「1次元配列」「2次元配列」など、構造を理解するのに役立ちます!
配列の形(行・列のサイズ)を確認する:ndarray.shape
各次元のサイズをタプルで教えてくれるのが .shape です。
c = np.array([[1, 2, 3], [4, 5, 6]])
print(c.shape) # (2, 3)
→ 2行3列の配列ということがわかります。
配列の形を変える:reshape()
データの中身はそのまま、行数や列数を変更したいときに使うのが reshape() です。
d = np.array([1, 2, 3, 4, 5, 6])
reshaped = d.reshape((2, 3))
print(reshaped)
[[1 2 3]
[4 5 6]]
🔸注意:reshapeで指定する新しい形は、元の要素数と一致している必要があります!
配列を1次元に平坦化する:flatten()
多次元配列を1次元に変換するには flatten() を使います。
e = np.array([[1, 2], [3, 4]])
print(e.flatten()) # [1 2 3 4]
これはデータの順番を保ったまま1次元に変換できる便利な方法です。
要素にアクセスする:[] と : の使い方
NumPy配列では、インデックスやスライスで要素にアクセスできます。
f = np.array([[10, 20], [30, 40]])
print(f[0, 0]) # 1行目1列目 → 10
print(f[1, :]) # 2行目すべて → [30 40]
print(f[:, 1]) # 全行の2列目 → [20 40]
[行, 列]の順番に指定:は「全部」を意味します

このように、NumPyでは配列の「形」や「サイズ」を直感的に操作できます。
次は、実際に配列同士で計算したり、掛け算・足し算といった演算を行う方法を見ていきましょう!
6. 配列同士の演算とブロードキャスト
NumPyが便利なのは、配列を「数値の集まり」として一括で演算できるところです。
ここでは、配列と数値、配列同士の四則演算、そしてブロードキャストという便利な仕組みについて解説します!
配列と数値の演算
まずは、配列全体に対して数値を足したり掛けたりしてみましょう。
import numpy as np
a = np.array([1, 2, 3])
print(a + 10) # [11 12 13]
print(a * 2) # [2 4 6]
これができるのは、NumPyがベクトル演算に対応しているからです。
Pythonリストではできなかった、すべての要素への一括演算が、簡単に実現できます。
配列同士の演算(要素ごとの計算)
2つの配列が**同じ形(shape)**であれば、要素ごとの演算も可能です。
b = np.array([1, 2, 3])
c = np.array([4, 5, 6])
print(b + c) # [5 7 9]
print(b * c) # [4 10 18]
✅ 各要素が「同じ位置」にある値どうしで計算されます。
異なる形の配列もOK!ブロードキャストの魔法
NumPyには「ブロードキャスト(broadcast)」という便利な機能があります。
これは、異なる形の配列どうしでも条件が合えば自動的にサイズを揃えて演算してくれる仕組みです。
例1:1次元と2次元の演算
d = np.array([[1, 2, 3],
[4, 5, 6]])
e = np.array([10, 20, 30])
print(d + e)
[[11 22 33]
[14 25 36]]
1次元の配列 e が、各行に自動でコピーされて演算されました!
例2:縦方向にブロードキャスト
f = np.array([[1], [2], [3]]) # (3,1)
g = np.array([10, 20, 30]) # (3,)ではなく(3,)扱い
# エラーになるかと思いきや…
print(f + g)
[[11 21 31]
[12 22 32]
[13 23 33]]
このように、行・列の数が一致すれば、片方の配列を“拡張”して自動的に演算してくれるんです。
行列の積(ドット積)との違いに注意!
NumPyには、通常の「要素ごとの掛け算」とは別に、「行列の積(ドット積)」もあります。
x = np.array([[1, 2],
[3, 4]])
y = np.array([[5, 6],
[7, 8]])
print(x * y) # 要素ごとの積
print(np.dot(x, y)) # 行列の積
⚠️ x * y は対応する要素どうしの掛け算。
⚠️ np.dot(x, y) は数学でいう行列の積です。
行列の積は、1つ目の列数と2つ目の行数が一致していないと使えませんので、注意してくださいね。

このように、NumPyは「配列全体に対する計算」がとても得意です。
次は、配列の結合や分割、そして便利な統計・数学関数について紹介していきます!
7. 配列の結合・分割と便利関数
NumPyの魅力は、配列を作ったり計算したりするだけじゃありません。
複数の配列をまとめたり、切り分けたり、数値を集計したりといった操作も、とてもスムーズにできます。
ここでは「結合」「分割」「統計処理」などのよく使う便利な関数たちを紹介します!
配列を結合する:np.concatenate()
複数の配列を1つにまとめたいときは np.concatenate() を使います。
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])
# 行方向(縦にくっつける)
c = np.concatenate([a, b], axis=0)
print(c)
[[1 2]
[3 4]
[5 6]]
列方向にくっつける場合(axis=1):
d = np.array([[7], [8], [9]])
e = np.concatenate([c, d], axis=1)
print(e)
[[1 2 7]
[3 4 8]
[5 6 9]]
⚠️ axis=0 は行方向(縦)、axis=1 は列方向(横)
サイズが合っていないとエラーになるので注意!
配列を分割する:np.split()
逆に、1つの配列をいくつかに分けたいときは np.split() を使います。
f = np.array([[10, 20, 30],
[40, 50, 60]])
# 列ごとに3分割
parts = np.split(f, 3, axis=1)
for part in parts:
print(part)
[[10]
[40]]
[[20]
[50]]
[[30]
[60]]
統計関数でサクッと集計!
NumPyには、集計や統計処理に使える関数が標準でたくさんあります。
| 関数 | 説明 |
|---|---|
np.sum() | 合計 |
np.mean() | 平均 |
np.median() | 中央値 |
np.std() | 標準偏差 |
np.var() | 分散 |
np.min() / np.max() | 最小値 / 最大値 |
g = np.array([1, 2, 3, 4, 5])
print(np.mean(g)) # 平均 → 3.0
print(np.sum(g)) # 合計 → 15
print(np.std(g)) # 標準偏差 → 約1.41
✅ 数値がたくさんあるときも、これらの関数を使えばすぐに全体の特徴を把握できます!
数学関数もたくさんある!
数学の授業で習ったような関数も、NumPyなら簡単に使えます。
x = np.array([1, 4, 9])
print(np.sqrt(x)) # 平方根 → [1. 2. 3.]
print(np.log(x)) # 自然対数(ln)
print(np.sin(x)) # 三角関数
print(np.pi) # 円周率

これらの関数を組み合わせることで、NumPyは単なる配列ライブラリではなく、**強力な「数値演算エンジン」**として活用できます。
8. NumPyはどんな場面で使われるのか?
ここまでで、NumPyが「配列操作」や「数値計算」にとても強いライブラリであることがわかってきたと思います。
では実際に、NumPyはどんな場面で活躍しているのでしょうか?
① データ分析のベースとして使われる
Pythonでデータ分析をするとき、必ずといっていいほど登場するのが Pandas(パンダス)というライブラリです。
このPandasの内部では、データを保持するための構造としてNumPy配列(ndarray)が使われています。
つまり、Pandasで「表形式のデータ」を扱うときも、裏側ではNumPyががんばってくれているんですね。
✅ NumPyが使えれば、Pandasの理解も一段と深まります!
② 機械学習の前処理に欠かせない
Scikit-learn や TensorFlow、PyTorch といった機械学習ライブラリも、データの入力や処理にNumPy配列を使います。
たとえば:
- 学習データの準備(特徴量を2次元配列にする)
- 正規化や標準化などの数値操作
- 行列の掛け算や転置操作(ニューラルネットワークでも頻繁に登場)
こうした処理を高速かつ柔軟に行うために、NumPyがベースにあるんです。
③ 画像処理・信号処理にも強い
NumPyの3次元配列(縦・横・色の3軸)は、画像データの表現にピッタリです。
たとえば、OpenCVという画像処理ライブラリでは、画像ファイルをNumPy配列として読み込んで、ピクセル単位で加工します。
# 画像のピクセルを1.5倍にする例(明るくする)
img = np.array([[123, 100], [50, 80]])
brighter = img * 1.5
このように「数値 = ピクセル」として扱えるのが、NumPyの強みですね。
④ 科学技術計算や数値シミュレーションでも活用
- 微分方程式の数値解法
- 行列の固有値計算
- モンテカルロ法などのシミュレーション
こうした理系分野の計算処理でも、NumPyは定番のツールとなっています。
⑤ Excelの代わりとしても使える!
NumPyを使えば、「CSVファイルを読み込んで数値を計算する」といった操作も可能です。
簡易的な集計やグラフ作成などなら、Python + NumPy で十分まかなえることも多いです。

NumPyは、Pythonで「データを扱う」あらゆる場面の“土台”になっています。
データ分析、AI、画像処理、数値計算――これらに取り組むなら、NumPyの理解は必須です!
9. まとめ|NumPyはPythonの計算を加速させる最強ツール!
この記事では、Pythonの数値計算ライブラリ「NumPy」について、基本からじっくり学んできました。
NumPyを使うことで、Pythonがより強力な「データ処理・科学計算の武器」になることが実感できたのではないでしょうか?
✅ この記事の振り返り
| 学んだこと | 内容まとめ |
|---|---|
| NumPyとは? | 高速な数値計算・配列操作ができるライブラリ |
| ndarrayの特徴 | 同じ型の要素で構成された多次元配列。計算が超速い! |
| 配列の作成 | array(), zeros(), ones(), random.rand() など豊富な生成方法 |
| 配列の操作 | shape, reshape, flatten, スライスで柔軟に扱える |
| 演算とブロードキャスト | 配列同士、配列+スカラーの計算がサクサクできる |
| 統計・数学関数 | mean, sum, std, log, sinなど多数 |
| 活用シーン | データ分析、機械学習、画像処理、科学技術計算など多岐にわたる |
NumPyを理解すれば、Pythonの可能性がもっと広がる!
NumPyは単なる便利ツールではありません。
**Pandas・Scikit-learn・TensorFlowなど、あらゆる主要ライブラリの“基礎”**として活躍している、まさに“影の主役”です。
これからデータ分析やAIにチャレンジしたい方は、ぜひNumPyをしっかり身につけておきましょう!
💡 次のステップには「Pandas」や「Matplotlib」などの可視化ライブラリもおすすめです!
10. あわせて読みたい
NumPyを学んだあなたにおすすめの記事を紹介します。次のステップとして、ぜひチェックしてみてください!
Pythonでグラフを描く!Matplotlibの使い方を初心者向けにやさしく解説
→ NumPy配列のデータをグラフにしたいときに役立つのが「Matplotlib」。棒グラフ、折れ線グラフ、散布図などが簡単に描けます。
【Python入門】YAMLファイルの書き方と使い方|設定ファイルの操作をわかりやすく解説!
→ NumPyと組み合わせて使うと便利な設定ファイル。複雑な処理を構成ファイルで柔軟に制御できるようになります。
Pythonの高階関数とは?map・filter・reduceの使い方を初心者向けに解説!
→ データ変換や一括処理の考え方がNumPyと似ていて、よりPythonらしいコードが書けるようになります。
【Python入門】pathlibの使い方を完全解説|フォルダー・パス操作が簡単になる方法
→ NumPyで作ったデータをファイルに保存したり読み込んだりする際に便利なパス操作の基礎が学べます。
よくある質問(Q&A)
- QNumPyって、何をするためのライブラリなんですか?
- A
NumPyは、Pythonで高速に数値計算や配列操作を行うためのライブラリです。
リストのようにデータを扱いつつ、行列計算や統計処理、ベクトル演算などを簡単かつ高速に実行できます。
- QNumPyとPythonのリストはどう違うの?
- A
大きな違いは以下の3点です:
項目 Pythonリスト NumPy配列 型の統一 バラバラでもOK 同じ型のみ 計算の速さ 遅い 非常に速い 一括演算 手動でループ ベクトル演算が可能 NumPyの方が大量のデータを処理するのに適しているため、科学計算やAIの分野でよく使われます。
- QNumPyはどの分野で使われていますか?
- A
主に次のような分野で活躍しています:
- データ分析(Pandasとの連携)
- 機械学習(Scikit-learn, TensorFlowなど)
- 画像処理(OpenCV)
- 数値シミュレーション(物理・工学系の解析)
Pythonでデータを扱う仕事なら、NumPyはほぼ必須といえるでしょう。







※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。
※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。