Pythonデータ分析機械学習

NumPy配列

ナンパイはいれつ · NumPy array
2 views

NumPy配列(ndarray)とは、Pythonの数値計算ライブラリ「NumPy」で提供される多次元配列オブジェクトです。同種のデータを効率的に格納し、ベクトル演算や行列計算を高速に行えるため、機械学習やディープラーニングにおけるデータ処理のデファクトスタンダードとして広く利用されています。

NumPy配列とは

NumPy配列(エヌディーアレイ:ndarray)は、Pythonの数値計算ライブラリ「NumPy」で提供される、同一の型を持つ多次元のデータを効率的に扱うための配列オブジェクトです。

詳しく解説

NumPy配列は、C言語で実装されており、Python標準のリスト(list)と比較してメモリ消費が少なく、処理速度が極めて高速であるという特徴を持ちます。配列全体に対する演算を一括して処理する「ベクトル演算」が可能で、forループによる繰り返し処理を避けることでコードを簡潔にし、CPUやメモリのパフォーマンスを最大限に引き出します。機械学習ディープラーニングでは、画像データやテキストのベクトル表現、モデルのパラメータなどを多次元の数値データとして表現するため、その内部データ表現や演算の基盤としてNumPy配列が欠かせない存在となっています。

具体例・使われ方

具体的には、グレースケール画像を縦と横の2次元の数値(ピクセル値)の配列として表現したり、カラー画像であれば「縦・横・色チャネル(RGB)」の3次元配列として読み込みます。また、ディープラーニングの各層で入出力される多次元テンソルの表現や、機械学習アルゴリズムにデータを投入する前の前処理(標準化や正規化など)において、すべての要素に対して一括で演算を行う際にNumPy配列が使用されます。

似た用語との違い

Python標準のリスト(list)との最大の違いは、格納できる要素の「型」と「メモリの連続性」です。Pythonのリストは異なるデータ型を混在させることができますが、メモリ上にバラバラに配置されるため処理が低速です。一方、NumPy配列はすべての要素が「同一のデータ型」に統一されている必要があり、メモリ上に連続して配置されるため、極めて高速なアクセスとベクトル演算が可能です。また、ディープラーニングで用いられる「PyTorch」や「TensorFlow」のテンソルとも似ていますが、NumPy配列はCPU上での演算に特化しており、GPUを利用した並行処理や自動微分機能を持たないという違いがあります。

注意点

注意点として、NumPy配列は一度作成するとその「サイズ(要素数)」を後から動的に変更することができません。要素を追加しようとすると、内部的には新しい配列がメモリ上に再確保され、全体のコピーが発生するため、頻繁なサイズ変更はパフォーマンスを大幅に低下させます。また、すべての要素が同一の型にキャストされるため、異なる型を無理に混在させようとすると、意図しない型変換が発生してエラーやバグの原因となることがあります。

更新日時: 2026年9月5日 12:31