

高岡智則
年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)
numpy配列・とは?初心者向けの解説
Pythonにはデータを格納する方法としてリストがあります。ですが、数値を大量に扱う場合には「numpy」というライブラリが強力な味方になります。特に numpy配列 は、同じデータ型の要素を連続して格納する特別なデータ構造で、数値計算を早く、メモリの使い方も効率的にしてくれます。ここでは中学生にも分かるように、numpy配列の基本を丁寧に解説します。
まず基本のポイントを押さえましょう。numpy配列は公式には ndarray(n-dimensional array)と呼ばれ、多次元配列を表します。1次元はベクトル、2次元は行列、3次元以上はテンソルと呼ばれることもあります。いずれも同じデータ型の要素を格納でき、要素にアクセスするにはインデックスを使います。
リストと比べての大きな特徴は、ベクトル化された演算がサポートされている点です。例えば a = numpy.array([1, 2, 3]) とすると、a * 2 は [2, 4, 6] のように同じ形の新しい配列が返ってきます。これは for ループを使うよりもはるかに速く、特に大きなデータを扱うときに効果を発揮します。さらに numpy はブロードキャストと呼ばれる仕組みを使い、形が違う配列同士でも自動的に計算を拡張してくれる場面があります。
作り方と基本的な例
最初の一歩として、次のようにインポートして配列を作ります。例として 1次元の配列と 2次元の配列を作ってみましょう。
import numpy as np; a = np.array([1, 2, 3, 4, 5]); b = np.array([[1, 2, 3], [4, 5, 6]])
配列の形と次元の意味
| 例 | 次元 | 形 | 説明 |
|---|---|---|---|
| 1次元 | 1 | (3,) | 3つの要素を持つ1次元配列 |
| 2次元 | 2 | (2,3) | 2行3列の配列 |
| 3次元 | 3 | (2,2,2) | 2×2×2の多次元配列 |
基本的な操作
インデックスとスライスを使えば配列の一部を取り出せます。例えば a = np.array([10, 20, 30, 40, 50]) の場合、a[0] は 10、a[1:3] は [20, 30] になります。負のインデックスも使え、a[-1] は最後の要素の 50 です。
ブロードキャストにより、形が合えば異なる形の配列同士の演算も可能です。これにより複雑な計算を短い式で表すことができます。
総和と平均のような集約演算も簡単です。例えば a.sum() や a.mean() のように呼ぶと、配列内の全要素の総和や平均値が返されます。2次元配列の場合は axis という軸を指定して列ごとや行ごとに計算することもできます。
よくある落とし穴と注意点
配列は同じデータ型の要素で構成されることが前提です。異なる型を混ぜて作ると自動的に型が揃えられ、意図しない結果になることがあります。もう一つの注意点は「ビューとコピー」です。ある配列を別の変数に代入しただけだと、両者は同じデータを参照します。片方を変更するともう一方にも影響します。必要なときは copy() を使ってコピーを作成しましょう。
インストールと導入
基本的には pip または conda を使って numpy を導入します。コマンドは次のとおりです。
pip install numpy; conda install numpy
導入が済んだら Python での使用はとても簡単です。
import numpy as np; a = np.array([1, 2, 3])
実務での使い方のコツ
データ分析や科学計算では、リストをそのまま使うよりも numpy 配列を用意しておくと計算が速くコードもすっきりします。データの形状を最初に確認することが大切です。配列の形状を確かめるには a.shape を使います。2次元の表を扱うときは行数と列数の感覚を意識しましょう。
まとめと次のステップ
この記事で学んだことを踏まえると、numpy配列は Python でのデータ処理の核となるツールだと分かります。ndarray の基本を理解し、形状、インデックス、ブロードキャスト、基本演算を使いこなせば、次の機械学習やデータ分析にも挑戦しやすくなります。初めのうちは小さな配列で練習し、徐々に多次元配列や高度な関数へと進めていくのが良いでしょう。
numpy配列の同意語
- numpy配列
- NumPyが提供する基本のデータ構造。多次元のデータを格納するオブジェクトで、主に ndarray 型として使われます。
- NumPy配列
- NumPyが提供する基本のデータ構造。多次元のデータを格納するオブジェクトで、主に ndarray 型として使われます。
- numpy ndarray
- NumPyのndarrayクラスを指す表現。n次元のデータを格納する配列オブジェクトです。
- NumPy ndarray
- NumPyのndarrayクラスを指す表現。n次元のデータを格納する配列オブジェクトです。
- numpyアレイ
- NumPyで扱う配列を指す日本語表現。アレイは array の和訳です。
- NumPyアレイ
- NumPyで扱う配列を指す日本語表現。アレイは array の和訳です。
- ndarray
- NumPyのndarrayクラスそのもの。一次元以上の多次元配列を表す基本データ型です。
- ndarray型
- ndarrayという型。NumPyで配列を表す中心的なデータ型です。
- NumPyの配列
- NumPyライブラリが提供する配列データ構造。インデックス指定や演算が可能なオブジェクトです。
- NumPyの多次元配列
- NumPyで扱える次元数が複数ある配列。形状は (次元ごとの長さ) で表されます。
- 多次元配列
- 1次元以上の配列を指す用語。NumPyではn次元配列の総称として使われます。
- N次元配列
- 英語の N-dimensional array の日本語表記。NumPyで扱われる多次元データの基本形です。
- N-dimensional array
- 英語表現。NumPyの基本的なデータ構造である n 次元配列を指します。
- アレイオブジェクト
- NumPyの配列を指す一般的な名称。arrayオブジェクトと同義に使われます。
- NumPyアレイオブジェクト
- NumPyで作られる配列オブジェクト。主に ndarray を指す表現です。
- arrayオブジェクト
- 配列を指す英語表現。NumPyの配列にも用いられます。
numpy配列の対義語・反対語
- スカラー値
- NumPy配列は複数の要素を格納できる多次元のデータ構造ですが、スカラー値は1つの数値だけを表します。要素数を持たない、単一の値という点が対照的です。
- 単一値
- 1つの値だけを表すデータ。NumPy配列のような複数要素を持つ構造ではありません。
- Python標準リスト
- Pythonの標準ライブラリで用いられる可変長の要素列。NumPy配列と比べて機能は限定的ですが、柔軟で扱いやすいです。
- Pythonタプル
- 要素を変更できない不変のシーケンス。NumPy配列より単純で、計算機能は少ない代わりに軽量です。
- Python辞書
- キーと値を組み合わせてデータを格納する連想配列。配列とは別のデータ構造で、要素は順序付きの集合ではありません(順序は保証されないことが多い)。
- データフレーム
- 表形式のデータを列と行で管理する2次元データ構造。ラベル付きの列を持ち、NumPy配列より高度なデータ操作が可能ですが、内部では配列を使います。
- スパース配列
- ほとんどの要素がゼロや空値である疎なデータを効率的に格納する形式。密なNumPy配列の反対で、用途が異なります。
numpy配列の共起語
- ndarray
- NumPyの多次元配列を表す基本オブジェクト。shapeやdtypeを持ち、要素を格納します。
- np_array
- NumPyで配列を作成する基本関数。np.array を使ってリストやタプルから配列を生成します。
- shape
- 配列の各軸の長さを表すタプル。例: (3, 4) は3行4列を意味します。
- ndim
- 配列の次元数。例: 2次元なら2。
- size
- 配列全体の要素数。shapeの各軸の長さを掛け合わせた値です。
- dtype
- 配列の要素のデータ型。例: float64, int32, bool など。
- itemsize
- 1要素のバイト数。dtypeによって決まります。
- data
- 内部データの生データ領域への参照。ビューやコピーの基点になることがあります。
- indexing
- 要素へアクセスする基本的な操作。整数インデックスやブールインデックスを使います。
- slicing
- スライスを使って部分配列を取り出す操作。コロン : を用いて範囲を指定します。
- slice_syntax
- 例: a[1:3, :] は2〜3行目の全列を取り出します。
- reshape
- 配列の形状を変更する。データの順序は保持され、サイズは変わりません。
- transpose
- 軸を入れ替える操作。転置を作るには .T や transpose() を使います。
- axis
- 演算や集計の対象となる軸を指定する概念。0 が行、1 が列などと呼ばれます。
- broadcasting
- 形状の異なる配列同士を自動的に拡張して演算できる仕組み。
- ufunc
- 要素ごとの高速演算を提供するユニバーサル関数群。例: add, subtract, sqrt など。
- dot
- 行列積を計算する関数。ベクトルの内積や行列の掛け算に使われます。
- matmul
- マトリックス乗算を行う関数・演算子。@ でも利用します。
- concatenate
- 複数の配列を結合して1つの配列にします。
- stack
- 配列を新しい軸のもとに積み上げて結合します。
- split
- 配列を指定した区間で分割します。
- flatten
- 多次元配列を1次元に平坦化します。コピーを返すことが多いです。
- ravel
- 1次元配列に平坦化します。必要に応じてビューになることもあります。
- tolist
- NumPy配列をPythonのリストへ変換します。
- astype
- データ型を別のdtypeへ変換します。
- zeros
- 全要素が0の配列を作成します。
- ones
- 全要素が1の配列を作成します。
- empty
- 初期化されていない値を含む配列を作成します。
- arange
- 開始値から等間隔で数列を生成します。
- linspace
- 指定区間を等間隔で分割して数列を生成します。
- copy
- 配列の値を新しい領域にコピーして独立した配列を作成します。
- view
- 同じデータを別の形で参照するビューを作成します。
- order
- メモリ上のデータの並び順。C順(行優先)または F順(列優先)を指定します。
- boolean_indexing
- ブール値を使って条件に合う要素を抽出します。
- fancy_indexing
- 整数のインデックス配列を使って要素を取り出します。
- np_alias
- numpyをインポート時に np と略して使う慣習。
numpy配列の関連用語
- ndarray
- NumPyの中核となる多次元配列オブジェクト。すべての要素は同じデータ型で格納され、高速な数値演算の基盤となります。
- shape
- 配列の各次元の長さを表すタプル。例: (3, 4) は3行4列です。
- ndim
- 配列の次元数。0次元はスカラー、1次元はベクトル、2次元は行列など。
- size
- 配列の全要素数。shapeの積で求められます。
- dtype
- 要素のデータ型を表すオブジェクト(例: int64, float32, bool)。
- itemsize
- 1要素のバイト数。
- nbytes
- 配列全体のメモリ使用量(バイト数)。
- T
- 転置。配列の転置を返す属性。
- transpose
- 配列を転置する関数。軸の順序を並べ替え、要素を再配置します。
- reshape
- 配列の形状を変更する。合計要素数は一定でなければなりません。
- ravel
- 配列を1次元に平坦化します。通常はビューになる場合が多いです。
- flatten
- 配列を1次元に平坦化します。通常は新しいコピーを返します。
- squeeze
- 長さが1の次元を削除して形状を圧縮します。
- expand_dims
- 新しい次元を追加して形状を拡張します。
- axes
- 複数の軸を表す集合。
- axis
- 操作の対象となる軸を指定する引数。
- indexing
- 配列から要素を取り出す操作の総称。
- slicing
- スライス構文で部分配列を取り出す方法。
- boolean indexing
- ブールマスクを使って要素を選択します。
- fancy indexing
- 整数配列などを使って要素を柔軟に選択します。
- integer indexing
- 整数のインデックスを使う基本的な要素抽出。
- ellipsis
- 省略記号 ... を使って次元を省略して表現します。
- where
- 条件に基づき要素を選択・置換する関数。
- mask
- True/False のブール型マスク配列。
- broadcasting
- 形状の異なる配列を自動的に整形して同時演算を可能にする機能。
- ufunc
- ユニバーサル関数。要素ごとに演算を適用する高速関数群。
- vectorization
- ループを回さずに配列演算を行う高速化の考え方。
- astype
- データ型を別の型へ変換します。
- asarray
- 入力をndarrayに変換します。元のデータを維持する場合があります。
- array
- 新しいndarrayを作成する基本的な関数。
- view
- 元データと同じメモリを参照する別のビューを作成します。
- copy
- データを新しい配列としてコピーします。
- inplace
- 演算を元の配列に直接適用すること。
- flags
- 配列の属性情報を格納するオブジェクト(例: C_CONTIGUOUS/F_CONTIGUOUS)。
- C_CONTIGUOUS
- C順序(行優先)で連続して格納されていることを示します。
- F_CONTIGUOUS
- Fortran順序(列優先)で連続して格納されていることを示します。
- ascontiguousarray
- C順序で連続になるようコピーして返します。
- memmap
- 大規模データをディスク上のファイルにマッピングして扱う配列タイプ。
- structured_array
- 複数のフィールドを持つ構造化データ型の配列。
- recarray
- 構造化配列の一種で、フィールド名を属性参照でアクセスできる形式。
- dtype.kind
- dtypeの種類を表す文字。例: 'i'(整数), 'f'(浮動小数), 'U'(Unicode) など。
- endianness
- データのバイト順序。'<' はリトルエンディアン、'>' はビッグエンディアン。
- byteorder
- データのバイト順序の表記。
- frombuffer
- 既存のバイト列から配列を作成します。
- fromfile
- ファイルから配列を読み込みます。
- loadtxt
- テキストファイルから数値データを読み込む補助関数。
- genfromtxt
- 欠損値を許容しつつテキストデータを読み込む関数。
- zeros
- 全要素が0の配列を作成します。
- ones
- 全要素が1の配列を作成します。
- empty
- 初期値が未設定の配列。値は未定義の可能性があります。
- full
- 全要素を指定した値で埋める配列を作成します。
- arange
- 開始値から終値まで等差数列を作成します。
- linspace
- 区間を等間隔で分割して値を作成します。
- logspace
- 対数スケールで等間隔に値を作成します。
- meshgrid
- 座標格子を作成して多次元データの生成に使います。
- concatenate
- 複数の配列を結合して1つの配列にします。
- stack
- 新しい軸を挿入して配列を結合します。
- hstack
- 水平方向に結合します(列方向の結合)。
- vstack
- 垂直方向に結合します(行方向の結合)。
- dstack
- 深さ方向に結合します。
- split
- 配列を複数の配列に分割します。
- take
- インデックス配列で要素を抽出します。
- put
- 指定位置に値を代入します。
- argmin
- 最小値のインデックスを返します。
- argmax
- 最大値のインデックスを返します。
- nonzero
- 非ゼロ要素のインデックスを返します。
- argwhere
- 条件を満たす要素のインデックスを抽出します。
- newaxis
- 配列に新しい次元を追加する特殊スライスオブジェクトです。
- np.may_share_memory
- 2つの配列が同じメモリを共有している可能性を推定します。
- np.isfortran
- Fortran順序の配列かどうかを判定します。
- np.asfortranarray
- Fortran順序の連続配列に変換します。



















