◤Python無料教材配布◢ JobCodeメールマガジン実施中!

【Python】NumPyとは?インストールや使い方|arangeやarrayを解説

python-numpy

データ処理/分析時などで数値計算を効率的に行う際に多用されるPythonライブラリNumPyについてまとめた記事になります。

本記事の要点
  • NumPyの基本的な使い方を知りたい人
  • NumPyの便利なメソッドを使いたい人
  • NumPyのメソッドによる具体的な手法を知りたい人

上記の悩みを解決しながら、NumPyのインストールから使い方まで解説します。

また、NumPyの具体的な手法でarange/arrayなどに関する解説を中心に記載しています。

目次

NumPyとは

NumPy(Numerical Python)は、Pythonで数値計算を効率的に行うライブラリです。

多次元配列の操作に優れており、科学技術計算やデータ分析で利用されます。

以下は、matplotlibの主な特徴になります。

numpyの特徴
  • 高速な数値計算
  • 多次元配列のサポート
  • 豊富な数学関数
  • 他ライブラリとの連携
  • 高パフォーマンスによる高速処理
  • 使いやすさ

近年、機械学習/AI分野において、以下の理由からNumPyは必須ライブラリになっています。

NumPyが機械学習/AI分野で必須な理由
  • 膨大な数値計算を高速に行う必要があるため
  • AI/機械学習を実装する便利な関数が多く存在するため

NumPyのインストール

NumPyを利用するためには、ローカルPC上にインストールする必要があります。

以下は、NumPyのインストール方法になります。

NumPyのインストール方法
  • Anaconda(Pythonパッケージ)の一括インストール
  • NumPy単体のインストール

筆者は、Anacondaによる一括インストールをおすすめしていません。
理由としては、Anacondaのバージョンや互換性のない欠損ファイル等で利用できない可能性があるためです。

また、全く環境構築ができていない場合を考え、以下の構築ステップを記載します。

STEP
Pythonのインストール

Pythonの公式サイトからインストーラーをダウンロードします。

各OSに合わせたインストーラーを起動することでPythonを自身のPCにインストールできます。

Pythonの詳細なインストール手順や設定を画像で知りたい人は「【Python】ダウンロードとインストール方法から開発環境構築まで解説!」を一読ください。

関連記事は、Pythonのダウンロード・インストールと設定・環境構築を解説します。
記事を読み終えると、Pythonのダウンロードとインストール完了、実行環境の構築まで準備できます。

STEP
pipのバージョン確認

基本的に、Pythonをインストールした時点で付属モジュールとしてpipもインストールしています。

pipモジュールを利用することでNumPyのインストールが可能になります。

pip --version

上記のコードにて、pipモジュールのバージョンを確認できます。

STEP
NumPyのインストール

NumPyをインストールする場合は、以下のコマンドをターミナルあるいはコマンドプロンプトで実行します。

Pythonパッケージ管理ツールpipを利用することでインストールできます。

pip install numpy

Jupyter Notebookをお使いの方は、起動したNotebookのセルに、先頭に!マークをつけて実行することでインストールすることが出来ます。

!pip install numpy

また、データ分析環境でよく利用されるJupyter NotebookあるいはJupyter Labの記事も一読ください。

オンライン環境でPythonを扱いたい人は「【Python】Google Colaboratoryとは?料金から使い方まで網羅的に解説!」を一読ください。

NumPyの基本的な使い方

ここでは、NumPyの基本的な使い方として代表的なメソッド(関数)を解説します。

以下は、Numpyの代表的なメソッドになります。

NumPyの代表的なメソッド
  • numpy.arange()
  • numpy.array()
  • numpy.dot()
  • numpy.where()
  • numpy.zeros()

すでに何かしらの計算結果データをお持ちの人は、ぜひ利用してみてください。

データをお持ちでない人もサンプルデータを用意しているため、サンプルコードを確認してください。

numpy.arange()

numpy.arange()は、指定した範囲で等間隔の値を持つNumPy配列を生成する関数です。

Pythonの組み込み関数range()に似てますが、浮動小数点のステップ値にも対応します。

範囲はstartからstopまで(stop は含まれません)で、stepにより間隔を指定します。

主に繰り返し処理や配列初期化/数値シミュレーションの範囲設定などに利用されます。

スクロールできます
引数名デフォルト値説明
start必須または0開始値(1つだけ指定した場合はstart=0, stop=値と解釈)
stop必須終了値(この値は含まれない)
step1値の間隔(負の値も可)
dtypeNone配列のデータ型(明示指定しない限り自動推定)
likeNone新しい配列が参照する配列(NumPy1.20以降、拡張目的で使用)
numpy.arange()の引数と説明
start, stopの基本例

実行内容は、3から始まり10未満(10は含まず)までの整数値を含むNumPy配列を生成しています。

import numpy as np

a = np.arange(3, 10)
print(a)
[3 4 5 6 7 8 9]
stepの指定(負のステップも可能)

実行内容は、10から始まり3より大きい範囲まで2ずつ減少する数列を生成しています。

import numpy as np

b = np.arange(10, 3, -2)
print(b)
[10 8 6 4]
dtypeの指定(浮動小数点)

実行内容は、1から5未満まで0.5間隔で、32ビット浮動小数点として配列を生成しています。

import numpy as np

c = np.arange(1, 5, 0.5, dtype=np.float32)
print(c)
[1. 1.5 2. 2.5 3. 3.5 4. 4.5]
like引数の使用(NumPy拡張用途)

実行内容は、xと同じ型の配列オブジェクトとして[0 1 2 3 4]を生成しています。(通常使用では不要)

import numpy as np

x = np.array([1, 2, 3])
d = np.arange(0, 5, like=x)
print(d)
[0 1 2 3 4]

likeは通常の利用では使われず、NEP-35(NumPy拡張仕様)対応目的です。

numpy.array()

numpyp.array()は、Pythonのリスト/タプル/配列状のオブジェクトをNumPy配列(ndarray)に変換する関数です。

多次元配列を作成でき、NumPyの強力な数値演算機能を利用する基盤になります。

必要に応じて、要素型(dtype)や次元数/コピー有無/順序などを細かく制御できます。

配列の初期化やデータ構造の変換に使われる関数の1つです。

スクロールできます
引数名デフォルト値説明
objectなし(必須)リストやタプル、他の配列など配列化対象のオブジェクト
dtypeNone要素のデータ型(例: float, int32, boolなど)
copyTrueTrue: データのコピーを作成する / False: 可能ならコピーせず参照
orderNone‘K’   メモリ順序(’C’: C順、’F’: Fortran順、’A’, ‘K’など)
subokFalseTrue: サブクラスのインスタンスを保持 / False: ndarrayに強制変換
ndmin0最小次元数を指定(例: ndmin=2で最低でも2次元にする)
likeNone他の配列に“似た”オブジェクトを作成(NEP-35拡張)
numpy.array()の引数と説明
object(基本的な使い方)

リスト[1, 2, 3]をNumPy配列に変換しています。

import numpy as np

a = np.array([1, 2, 3])
print(a)
[1 2 3]
dtype(型を明示指定)

整数リストをfloat型配列に変換([1.0, 2.0, 3.0])しています。

import numpy as np

b = np.array([1, 2, 3], dtype=float)
print(b)
[1.0 2.0 3.0]
copy=False(コピーせず共有)

可能ならオリジナルデータを参照しコピーを抑制(ただし通常はコピーされる)しています。

import numpy as np

lst = [1, 2, 3]
c = np.array(lst, copy=False)
lst[0] = 99
print(c)  # 通常は影響なし(Python list → NumPyではコピーが行われるため)
order=’F’(列優先のメモリ順)

Fortran形式の列優先で内部的に配列を格納しています。

import numpy as np

d = np.array([[1, 2], [3, 4]], order='F')
print(d)
[[1 2] [3 4]] #(見た目には変化なし)
subok=True(サブクラス保持)

subok=Trueでサブクラスを維持(この例ではndarrayに戻る)しています。

import numpy as np

class MyArray(np.ndarray): pass

arr = np.array([1, 2, 3])
e = np.array(arr, subok=True)
print(type(e))
ndmin=2(最低2次元)

1次元リストを強制的に2次元配列にします。

import numpy as np

f = np.array([1, 2, 3], ndmin=2)
print(f)
print(f.shape)
[[1 2 3]] # 形状は(1, 3)
like(他の配列と互換な形で作成)

likeは拡張用途です。

通常はnp.array(…)と等価な結果になります。

import numpy as np

g = np.array([1, 2, 3], like=np.array([10, 20, 30]))
print(g)

numpy.dot()

numpy.dot()は、内積(ドット積)を計算する関数で、ベクトル同士/行列同士/スカラーとの掛け算などに対応します。

1次元配列同士では通常の内積、2次元配列では行列の積になります。

多次元配列(3次元以上)の場合は、最後の軸と次元が合うように計算されます。

基本的な線形代数処理の基礎となる関数です。

スクロールできます
引数名デフォルト値説明
a必須ドット積を計算する左側の配列
b必須ドット積を計算する右側の配列
outNone計算結果を格納する出力配列(指定しない場合、新しい配列を返す)
numpy.dot()の引数と説明

numpy.dot(a, b, out=None)の形式です。

a, b(1次元配列の内積)

1×4 + 2×5 + 3×6 = 32 の内積を計算します。

import numpy as np

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
result = np.dot(a, b)
print(result)
32
a, b(2次元配列の行列積)

行列の掛け算を行います。

result[i][j] = a[i][0]*b[0][j] + a[i][1]*b[1][j] で計算されます。

import numpy as np

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
result = np.dot(a, b)
print(result)
[[19 22]
 [43 50]]
out引数で結果を別配列に保存

numpy.dot(a, b)の計算結果をout_arrに保存(再利用メモリを節約)しています。

import numpy as np

a = np.array([1, 2])
b = np.array([3, 4])
out_arr = np.empty(1)
np.dot(a, b, out=out_arr)
print(out_arr)
[11.] # (1*3 + 2*4 = 11)
numpy.dot()の備考
  • np.dot()は、主に線形代数の内積表現として使われる
  • NumPyでは@演算子(Python 3.5以降)やnp.matmul()/np.einsum()などもある
  • 高速化やブロードキャスト目的ではnp.inner()やnp.outer()との違いに注意

numpy.where()

numpy.where()は、条件に基づいて要素のインデックスや値を取得・選択する関数です。

1つの引数を与えると、条件を満たす要素のインデックス(位置)を返します。

3つの引数(条件、True時の値、False時の値)を与えると、条件に応じて値を選択した配列を返します。

ブール条件に基づく要素の抽出や置換に便利な関数です。

スクロールできます
引数名デフォルト値説明
condition必須真偽値(bool)型の配列や条件式
x省略可条件がTrueの位置に使用する値(指定時)
y省略可条件がFalseの位置に使用する値(指定時)
numpy.where()の引数と説明

x, yはどちらも指定された場合に限り、値の選択配列を返します。
指定がなければインデックスを返します。

conditionのみ(インデックス取得)

a > 25の条件を満たす要素のインデックスを取得し、該当する値を抽出しています。

import numpy as np

a = np.array([10, 20, 30, 40, 50])
index = np.where(a > 25)
print(index)
print(a[index])
(array([2, 3, 4]),)
[30 40 50]
condition, x, y(条件で値を選択)

偶数なら”even”、奇数なら”odd”を選んで文字列配列を作成しています。

import numpy as np

b = np.array([1, 2, 3, 4, 5])
result = np.where(b % 2 == 0, "even", "odd")
print(result)
['odd' 'even' 'odd' 'even' 'odd']
x, yに配列指定(値置き換え)

0以下の要素を0に置き換えています。(c > 0がTrueのときはそのまま、Falseのときは0)

import numpy as np

c = np.array([-1, 0, 1, 2])
result = np.where(c > 0, c, 0)
print(result)
[0 0 1 2]
numpy.where()の備考
  • np.where(condition)のように、引数1つで呼ぶと「インデックス配列」を返す
  • np.where(condition, x, y)のように、引数3つで呼ぶと「条件分岐付きの新しい配列」を返す
  • ブロードキャスト対応のため、x/yはスカラーでも配列でもOK

numpy.zeros()

numpy.zeros()は、指定した形状と型の要素がすべて0の新しい配列を作成する関数です。

多次元のゼロ初期化された配列(ベクトルや行列など)を生成できます。

配列の形はタプルや整数で指定し、dtypeにより要素のデータ型も選べます。

数値計算の初期化やテンプレート作成において使われます。

スクロールできます
引数名デフォルト値説明
shape必須作成する配列の形(整数またはタプル)
dtypefloat64配列要素のデータ型(例:int, float, boolなど)
order‘C’配列のメモリ順序。’C’は行優先、’F’は列優先
numpy.zeros()の引数と説明
shapeのみ指定(基本的な使い方)

2行3列のゼロ行列を作成しています。(デフォルトfloat64)

import numpy as np

a = np.zeros((2, 3))
print(a)
[[0. 0. 0.]
 [0. 0. 0.]]
dtypeを指定して整数配列

要素型を整数に指定し、3要素のゼロ配列を作成しています。

import numpy as np

b = np.zeros((3,), dtype=int)
print(b)
[0 0 0]
orderを指定(列優先の配列)

列優先(Fortranスタイル)でメモリに格納される2×2ゼロ行列を作成しています。

import numpy as np

c = np.zeros((2, 2), order='F')
print(c)
[[0. 0.]
 [0. 0.]]
numpy.zeros()の備考
  • np.zeros_like()を使うと既存配列と同じ形でゼロ配列を作れる
  • zeros()で作成した配列は数値演算や初期化時のベースで利用できる
  • 多次元行列(例:3次元テンソルなど)にも簡単に対応(例:np.zeros((2, 3, 4)))

NumPyのその他メソッドと引数

numpyライブラリにはその他の多くのメソッドが存在します。

また、各メソッドに対して多くの引数があるため、改めて各メソッドと引数をまとめます。

スクロールできます
メソッド説明
np.ones指定サイズの1埋め配列生成
np.linspace等間隔値をnum点生成
np.reshape配列を形状変更
np.transpose転置または次元並び替え
np.add / np.subtract / np.multiply / np.divide / np.sqrt / np.power要素演算(加算・指数など)
np.sum / np.prod / np.mean / np.std / np.min / np.max集計・統計量計算
np.save / np.load / np.savetxt / np.loadtxtバイナリ・テキスト形式の読み書き
np.all / np.any論理判定(全/いずれか)
numpyのその他メソッド

numpy.ones()

numpy.ones()は、指定した形状・データ型で全要素が1の新しい配列を生成する関数です。

shapeにより多次元の構造にし、dtypeにより要素の型を設定できます。

初期化された配列が全て1であるため、機械学習や統計処理の初期値設定に使われます。

orderにより行優先(C)または列優先(Fortran)での配置も可能です。

スクロールできます
引数名デフォルト値説明
shape必須作成する配列の形(整数またはタプル)
dtypefloat64配列要素のデータ型(例:int, float, boolなど)
order‘C’配列のメモリ順序。’C’は行優先、’F’は列優先
numpy.ones()の引数と説明
shapeのみ指定(基本的な使い方)

2行3列のすべての要素が1の行列を作成します。(デフォルトfloat64型)

import numpy as np

a = np.ones((2, 3))
print(a)
[[1. 1. 1.]
 [1. 1. 1.]]
dtypeを指定して整数型にする

要素を整数型に指定し、1次元・4要素の配列[1 1 1 1]を作成します。

import numpy as np

b = np.ones((4,), dtype=int)
print(b)
[1 1 1 1]
orderを指定して列優先配列にする

2×2の配列を列優先順(Fortranスタイル)で生成しています。(表示は同じでも内部構造が異なる)

import numpy as np

c = np.ones((2, 2), order='F')
print(c)
[[1. 1.]
 [1. 1.]]
numpy.ones()の備考
  • np.ones_like(a)を使えば既存配列と同じ形で1の配列を作成できる
  • 学習用初期重み/バイアスベクトル/行列初期化の用途で使用
  • np.full()を使うと任意の値で埋められた配列も作成できる(例:全て7など)

numpy.linspace()

numpy.linspace()は、指定した範囲の数値を等間隔に分割した配列を生成する関数です。

startからstopまでを等間隔でnum個に分けた値を返します。

数値の補間/グラフのx軸の目盛作成/数値解析などで使われます。

オプションでendpoint(終了値の含有)やdtype/retstepなども指定可能です。

スクロールできます
引数名デフォルト値説明
start必須配列の開始値
stop必須配列の終了値
num50生成する要素数
endpointTruestopを配列に含めるかどうか
retstepFalse間隔(ステップサイズ)も返すか
dtypeNone結果のデータ型を指定
axis0配列をどの軸に並べるか(多次元に拡張する際に使用)
numpy.linspace()の引数と説明
startとstopの基本的な使用

0から10までを5分割(両端含む)した配列を生成しています。

import numpy as np

a = np.linspace(0, 10, 5)
print(a)
[ 0. 2.5 5. 7.5 10. ]
endpoint=False(終了値を含めない)

0から10未満を5分割し、10は含めないよう処理しています。

import numpy as np

b = np.linspace(0, 10, 5, endpoint=False)
print(b)
[0. 2. 4. 6. 8.]
retstep=True(ステップ幅も取得)

0~1を5分割した値とそのステップ幅(0.25)を同時に取得しています。

import numpy as np

c, step = np.linspace(0, 1, 5, retstep=True)
print("配列:", c)
print("ステップ幅:", step)
配列: [0.   0.25 0.5  0.75 1.  ]
ステップ幅: 0.25
dtype=int(型指定)

整数型として配列を生成しています。(小数点以下切り捨てにより同じ値が並ぶこともある)

import numpy as np

d = np.linspace(1, 5, 5, dtype=int)
print(d)
[1 2 3 4 5]
axis=1(多次元での並べ方)

reshapeと組み合わせてaxis指定の挙動に類似した使い方が可能です。

import numpy as np

e = np.linspace(0, 1, 5).reshape(1, -1)
f = np.linspace(0, 1, 5).reshape(-1, 1)
print("axis=1 相当:\n", e)
print("axis=0 相当:\n", f)
numpy.linspace()の備考
  • linspace()はarange()と似ていますが、分割数ベースで指定するのが特徴
  • グラフ目盛や信号処理の周波数領域、物理シミュレーションなどの用途で使用
  • retstep=Trueによって生成間隔を簡単に確認できて検証時も便利

numpy.reshape()

numpy.reshape()は、既存のNumPy配列の形状(次元数・サイズ)を変更するためのメソッドです。

元のデータは変更せずに、要素数を保ったまま新しい形状に再構成できます。

行列変換・画像処理・ディープラーニングなどで多用されます。

サイズを自動計算させるには-1を指定して変形できます。

スクロールできます
引数名デフォルト値説明
newshape必須新しい形状(int または tuple of int)。要素数の積は元と同じでなければならない
order‘C’データの読み取り順序: ‘C’(行優先)、’F’(列優先)、’A’(元の順序を可能な限り維持)
numpy.reshape()の引数と説明
newshapeを指定して配列の形状変更

1次元配列[1, 2, 3, 4, 5, 6]を2行3列に変形しています。

import numpy as np

a = np.array([1, 2, 3, 4, 5, 6])
b = a.reshape((2, 3))
print(b)
[[1 2 3]
 [4 5 6]]
-1を使ってサイズを自動計算

列を2列に固定し、行数を自動計算しています。(3行2列)

import numpy as np

c = a.reshape((-1, 2))
print(c)
[[1 2]
 [3 4]
 [5 6]]
order=’F’(列優先のメモリ順)

列優先(Fortranスタイル)で再構成しています。

import numpy as np

d = a.reshape((2, 3), order='F')
print(d)
[[1 3 5]
 [2 4 6]]
order=’A’(元の順序に準拠)

元の配列がC順序であればC順序、F順序であればF順序を維持します。

import numpy as np

e = a.reshape((2, 3), order='A')
print(e)
[[1 2 3]
 [4 5 6]]
numpy.reshape()の備考
  • reshape()は、元のデータの要素数と同じ総数になる必要がある
  • データコピーはせず、メモリビューを返すため高速(条件により異なる)
  • np.reshape(a, newshape)の関数形式でも利用

numpy.transpose()

numpy.transpose()は、NumPy配列の軸(次元)を並べ替えるメソッドです。

2次元配列の場合は、行と列を入れ替える操作(転置)になります。

多次元配列では任意の軸順に変更でき、テンソルの軸変換などに活用されます。

データの並べ替えはビューとして返され、元データは変更されません。

スクロールできます
引数名デフォルト値説明
axesNone転置後の軸の順番(タプルやリスト)。指定がない場合は全軸を逆順にする
numpy.transpose()の引数と説明
axesを指定しない(2次元転置)

3行2列の行列を転置して、2行3列に変更(行と列を入れ替え)しています。

import numpy as np

a = np.array([[1, 2], [3, 4], [5, 6]])
b = a.transpose()
print(b)
[[1 3 5]
 [2 4 6]]
axesを指定して明示的に転置(同上)

明示的に(1, 0)を指定して行列を転置(列→行, 行→列)しています。

c = a.transpose((1, 0))
print(c)
[[1 3 5]
 [2 4 6]]
3次元配列の軸を入れ替える例

形状 (2, 3, 4) を (3, 2, 4) に変更しています。(第1軸と第2軸を入れ替え)

d = np.arange(24).reshape(2, 3, 4)
e = d.transpose((1, 0, 2))
print(e.shape)
(3, 2, 4)
numpy.transpose()の備考
  • transpose()は元配列と同じデータを使ったビューを返すためメモリ効率が良い
  • 多次元配列の軸変換にはnp.moveaxis()やnp.swapaxes()との使い分けも可能

numpy.add()

numpy.add()は、要素単位での加算を行うNumPyの汎用関数(ufunc)です。

スカラーや配列(ブロードキャスト可能な形状)同士を加算でき、配列演算の基本となります。

通常の+演算子の代わりに使える関数形式で、追加の制御(出力先の配列など)も可能です。

outやwhereなどのキーワード引数を使えば、部分的な加算処理も柔軟に行えます。

スクロールできます
引数名デフォルト値説明
x1必須最初の入力配列(またはスカラー)
x2必須2番目の入力配列(またはスカラー)
outNone結果を格納する配列(ブロードキャスト互換である必要あり)
whereTrue演算を適用する位置を示すブール配列
dtypeNone結果配列のデータ型を指定
casting‘same_kind’型キャストのルール(例:’no’, ‘unsafe’, ‘safe’)
order‘K’出力配列のメモリ順序(’C’, ‘F’, ‘A’, ‘K’)
subokTrueサブクラス型の配列を出力として許可するか
signatureNone高度なufuncの型指定(基本使用しない)
extobjNone高度なオプション(省略可)
numpy.add()の引数と説明
基本的な加算(x1, x2)

対応する要素同士を加算。

import numpy as np

a = np.array([1, 2, 3])
b = np.array([10, 20, 30])
c = np.add(a, b)
print(c)
[11 22 33]
outを使って結果を別の配列に格納

結果をresult配列に格納([11 22 33])

result = np.empty_like(a)
np.add(a, b, out=result)
print(result)
whereを使って特定の要素だけ加算

加算する場所をマスクで指定(2番目の要素は加算されない)

mask = np.array([True, False, True])
d = np.add(a, b, where=mask)
print(d)
[11 2 33]
dtypeを指定して結果型を変更

結果をfloat32型で返す。

e = np.add(a, b, dtype=np.float32)
print(e)
[11. 22. 33.](dtype: float32)
numpy.add()の備考
  • np.add(x1, x2)は、x1+x2と等価だが、outやwhere などを使う場合は関数形式が便利
  • 高度な引数(signature, extobj)は通常の用途では不要
  • 演算速度やメモリ制御が必要な場面ではoutを使ってメモリ再利用が推奨

numpy.subtract()

np.subtract()は、要素単位の減算演算を行うNumPyの汎用関数(ufunc)です。

2つのスカラーまたは配列の差(x1 – x2)を返します。

ブロードキャストも可能で、サイズの異なる配列同士でも形状が整えば演算できます。

加算(np.add)と同様、outやwhereを指定して部分的に制御した演算も可能です。

通常の-演算子と等価ですが、より高度な使い方が可能です。

スクロールできます
引数名デフォルト値説明
x1必須最初の入力(被減数:左側)
x2必須2番目の入力(減数:右側)
outNone出力先の配列(省略時は新しく作成)
whereTrue条件に一致する要素のみ演算を適用
dtypeNone結果のデータ型を明示的に指定
casting‘same_kind’型キャストのルール(例: ‘no’, ‘safe’)
order‘K’出力配列のメモリ順序(例: ‘C’, ‘F’)
subokTrueサブクラス型の配列を出力として許可するか
signatureNone高度なufunc型指定(通常使用しない)
extobjNone高度な制御のためのオプション(通常使用しない)
numpy.subtract()の引数と説明
基本的な減算(x1, x2)

配列aとbの要素ごとの差を計算。

import numpy as np

a = np.array([10, 20, 30])
b = np.array([1, 2, 3])
c = np.subtract(a, b)
print(c)
[ 9 18 27]
outを使用(結果を指定の配列に格納)

結果をresult配列に格納(メモリ再利用)。

result = np.empty_like(a)
np.subtract(a, b, out=result)
print(result)
[ 9 18 27]
whereを使用(条件に合う要素のみ減算)

whereで指定された要素位置のみ計算、その他はx1の値を維持。

mask = np.array([True, False, True])
d = np.subtract(a, b, where=mask)
print(d)
[ 9 20 27]
dtypeを使用(結果の型を明示)

結果をfloat32型として計算。

e = np.subtract(a, b, dtype=np.float32)
print(e)
[ 9. 18. 27.](dtype: float32)
numpy.subtract()の備考
  • np.subtract(x1, x2)はx1-x2とまったく同じ結果を返す
  • np.subtract()のメリットは、out,where,dtypeを使った演算制御の柔軟性
  • ブロードキャスト対応なのでスカラーとの演算や多次元配列との組み合わせにも対応

numpy.multiply()

np.multiply()は、要素単位の掛け算(積)を行うNumPyの汎用関数(ufunc)です。

2つの配列やスカラーに対して、x1 * x2と同じ結果を返します。

outやwhere/dtypeなどの追加引数により、部分的な演算や出力型の制御も可能です。

ブロードキャストに対応しているため、形状が異なる配列同士の計算も柔軟に行えます。

スクロールできます
引数名デフォルト値説明
x1必須最初の入力(左辺の因数)
x2必須2番目の入力(減数:右側)
outNone結果を格納する出力配列
whereTrue条件に一致した位置にのみ演算を適用
dtypeNone結果のデータ型(例: np.float32)
casting‘same_kind’キャストの安全性(例: ‘no’, ‘safe’)
order‘K’出力配列のメモリ順序(例: ‘C’, ‘F’)
subokTrueサブクラスの配列を出力として許可するか
signatureNone型署名(高度な ufunc 向け)
extobjNone高度な制御(通常は使用しない)
numpy.multiply()の引数と説明
基本的な掛け算(x1, x2)

[1*10, 2*20, 3*30] を計算。

import numpy as np

a = np.array([1, 2, 3])
b = np.array([10, 20, 30])
c = np.multiply(a, b)
print(c)
[10 40 90]
outを使用して結果を指定の配列に格納

演算結果をresultに直接格納。

メモリ再利用に便利。

result = np.empty_like(a)
np.multiply(a, b, out=result)
print(result)
[10 40 90]
whereを使って特定の要素のみ演算

whereにより[1*10, 2, 3*30]を計算。

Falseの位置はx1の値がそのまま残る。

mask = np.array([True, False, True])
d = np.multiply(a, b, where=mask)
print(d)
[10 2 90]
dtypeを指定して結果の型を変更

計算結果をfloat32型で出力。

e = np.multiply(a, b, dtype=np.float32)
print(e)
[10. 40. 90.]
numpy.multiply()の備考
  • np.multiply()は、*演算子と同じく要素ごとの積を返す
  • np.multiply()の利点は、ブロードキャスト対応/型制御/outによるメモリ節約などの柔軟性
  • 同様の形式で他の演算(divide, power, mod など)も提供可能

numpy.divide()

np.divide()は、NumPy配列やスカラー同士の要素単位の除算を行う関数です。

x1/x2と同様の結果を返しますが、追加の引数でデータ型や結果格納先の指定、演算適用条件を細かく制御できます。

ブロードキャストをサポートしているため、異なる形状の配列同士でも柔軟に演算が可能です。

ゼロ除算が発生すると、警告を出しながらinfまたはnanを返す場合があります。

スクロールできます
引数名デフォルト値説明
x1必須分子となる配列またはスカラー(左辺)
x2必須分母となる配列またはスカラー(右辺)
outNone結果を格納する出力配列(省略可)
whereTrueTrueの要素にのみ演算を適用
dtypeNone出力配列のデータ型を指定
casting‘same_kind’型変換の安全性の指定(例: ‘no’, ‘safe’)
order‘K’出力配列のメモリレイアウト(例: ‘C’, ‘F’)
subokTrueサブクラス型の出力を許可するか
signatureNone明示的な型署名(ufunc用)
extobjNone拡張オブジェクト(高度な制御用)
numpy.divide()の引数と説明
基本的な使い方(x1, x2)

[10/2, 20/4, 30/5] → [5.0, 5.0, 6.0] を要素ごとに計算。

import numpy as np

a = np.array([10, 20, 30])
b = np.array([2, 4, 5])
result = np.divide(a, b)
print(result)
outを指定して結果を格納

出力用に事前に確保した配列outputに計算結果を格納しています。

メモリ効率向上します。

output = np.empty_like(a, dtype=float)
np.divide(a, b, out=output)
print(output)
whereを使って条件付き除算

Trueの位置だけ除算し、Falseの位置はそのまま保持(内容未定義のこともある)。

mask = np.array([True, False, True])
result = np.divide(a, b, where=mask)
print(result)
dtypeを指定して浮動小数型で除算

計算結果をfloat64型に明示的に変換して出力。

result = np.divide(a, b, dtype=np.float64)
print(result)
numpy.divide()の備考
  • np.divide()はスカラーにも対応し、np.divide(10, 2)のような使い方も可能
  • 0除算が発生した場合、RuntimeWarningが表示され、infまたはnanが返される
  • np.true_divide()も似ていますが、np.divide()の方が柔軟性のある一般的な除算

numpy.sqrt()

np.sqrt()は、配列内の各要素に対して平方根(√)を計算するNumPyのユニバーサル関数(ufunc)です。

負の値に対してはnanを返し、RuntimeWarningを発生させます(複素数として扱う場合はnp.lib.scimath.sqrt()を使用)。

スカラー/1次元配列/多次元配列全てに適用可能でブロードキャストにも対応しています。

演算結果の格納先や演算対象のマスク指定など柔軟に制御できます。

スクロールできます
引数名デフォルト値説明
x必須平方根を計算する対象の配列またはスカラー
outNone結果を格納する出力配列(省略可)
whereTrueTrueの要素にのみ演算を適用
dtypeNone出力配列のデータ型を指定
casting‘same_kind’型変換の安全性の指定(例: ‘no’, ‘safe’)
order‘K’出力配列のメモリレイアウト(例: ‘C’, ‘F’)
subokTrueサブクラス型の出力を許可するか
signatureNone明示的な型署名(ufunc用)
extobjNone拡張オブジェクト(高度な制御用)
numpy.sqrt()の引数と説明
基本的な使い方(x)

各要素の平方根 [√1, √4, √9, √16] → [1., 2., 3., 4.] を計算します。

import numpy as np

a = np.array([1, 4, 9, 16])
result = np.sqrt(a)
print(result)
outを使って結果を指定の配列に格納

平方根の結果をoutput配列に格納します(メモリ効率の最適化に有効です)。

output = np.empty_like(a, dtype=float)
np.sqrt(a, out=output)
print(output)
whereを使って一部の要素にのみ平方根を適用

Trueの場所のみ平方根を計算し、その他の場所は計算しない(値は未定義になる可能性があります)。

mask = np.array([True, False, True, False])
result = np.sqrt(a, where=mask)
print(result)
dtypeを指定して型を明示する

計算結果をfloat64型に変換して出力。精度を上げたい場合に使用します。

result = np.sqrt(a, dtype=np.float64)
print(result)
numpy.sqrt()の備考
  • xの要素が負数の場合、nanを返してRuntimeWarningが出力される
  • 複素数の平方根を扱いたい場合はnp.lib.scimath.sqrt()を使うと安全
  • np.sqrt()はufuncであり、ブロードキャストや型制御の機能を多く持つ

numpy.power()

np.power()は、NumPyのユニバーサル関数(ufunc)の一つで配列要素を指定された指数で累乗(べき乗)する関数です。

スカラー同士/配列とスカラー/配列同士でのべき乗演算に対応しており、要素ごとに演算されます。

出力先の配列指定(out)、マスク制御(where)など指定可能です。

配列のブロードキャストにも対応しており、効率的な数値演算に使われます。

スクロールできます
引数名デフォルト値説明
x1必須累乗の「底」部分(配列またはスカラー)
x2必須累乗の「指数」部分(配列またはスカラー)
outNone結果を格納する出力配列(省略可)
whereTrueTrueの要素にのみ演算を適用
dtypeNone出力配列のデータ型を指定
casting‘same_kind’型変換の安全性の指定(例: ‘no’, ‘safe’)
order‘K’出力配列のメモリレイアウト(例: ‘C’, ‘F’)
subokTrueサブクラス型の出力を許可するか
signatureNone明示的な型署名(ufunc用)
extobjNone拡張オブジェクト(高度な制御用)
numpy.power()の引数と説明
基本的な使い方(x1, x2)

a ** b を要素ごとに計算します → [2**3, 3**2, 4**1] → [8, 9, 4]

import numpy as np

a = np.array([2, 3, 4])
b = np.array([3, 2, 1])
result = np.power(a, b)
print(result)
outを使って結果を指定の配列に格納

演算結果 [8, 9, 4] を事前に用意した配列outputに格納します。

output = np.empty_like(a)
np.power(a, b, out=output)
print(output)
whereを使って一部の要素にのみ演算

Trueの場所のみ演算を行い、それ以外は初期値のままになります。

mask = np.array([True, False, True])
result = np.power(a, b, where=mask)
print(result)
dtypeを使って出力型を明示する

演算結果をfloat64型に変換。特に大きな値や精度が必要な場合に有効です。

result = np.power(a, b, dtype=np.float64)
print(result)
numpy.power()の備考
  • x1とx2にスカラーを指定すると、単純な数値のべき乗にも使える
  • 負の底に対して実数の非整数指数を指定するとnanを返す

numpy.sum()

np.sum()は、NumPy配列に含まれる要素の合計値を計算する関数です。

任意の軸(次元)を指定して合計を求めることができて配列の部分的な集計にも対応しています。

また、結果を格納する出力配列やデータ型の指定/NaNを除いた処理も可能です。

多次元配列の統計処理や前処理に用いられる関数です。

スクロールできます
引数名デフォルト値説明
a必須合計を計算する入力配列
axisNone合計を取る軸。Noneの場合、全要素を合計
dtypeNone計算中および結果のデータ型
outNone結果を格納する配列
keepdimsFalse合計後の配列形状に次元を保持するか
initial0合計開始値(例:累積に初期値を加える)
whereTrueTrueの位置のみを合計対象とする条件指定
numpy.sum()の引数と説明
基本的な使い方(配列全体の合計)

配列全体の合計 → 1 + 2 + 3 + 4 = 10

import numpy as np

arr = np.array([[1, 2], [3, 4]])
result = np.sum(arr)
print(result)
axisを指定して行または列ごとの合計を取得

axis=0: 列ごと → [1+3, 2+4] = [4, 6]

axis=1: 行ごと → [1+2, 3+4] = [3, 7]

result_axis0 = np.sum(arr, axis=0)
result_axis1 = np.sum(arr, axis=1)
print(result_axis0)  # 列ごとの合計
print(result_axis1)  # 行ごとの合計
dtypeを指定して型を明示

合計値をfloat64型として返す。

result = np.sum(arr, dtype=np.float64)
print(result)
outを使って結果を別の配列に保存

合計結果10を事前に用意したoutput配列に格納する。

output = np.empty(1)
np.sum(arr, out=output)
print(output)
keepdims=Trueで次元を保持

行ごとの合計 [3, 7] を2次元配列として [ [3], [7] ] で返す。

result = np.sum(arr, axis=1, keepdims=True)
print(result)
initialを指定して合計開始値を設定

配列の合計に初期値10を加算 → 10 + 1 + 2 + 3 + 4 = 20

result = np.sum(arr, initial=10)
print(result)
whereを使って条件を満たす要素のみ合計

マスクがTrueの要素(1と4)のみを合計 → 1 + 4 = 5

mask = np.array([[True, False], [False, True]])
result = np.sum(arr, where=mask)
print(result)
numpy.sum()の備考
  • 任意の軸ごとの合計が可能
  • 高速かつベクトル化された演算
  • 柔軟な制御が可能(型・初期値・条件付き合計など)

numpy.prod()

np.prod()は、指定された配列内の全要素、または指定軸の要素の積(掛け算)を計算するメソッドです。

多次元配列に対してaxisを指定すれば、その軸に沿った積が求められます。

データ型の指定(dtype)や初期値(initial)を与えることで、数値の桁あふれや精度問題への対応も可能です。

条件付きで積をとる場合はwhere引数でマスクできます。

スクロールできます
引数名デフォルト値説明
a必須対象となる配列または数値
axisNone積を計算する軸。省略時は全体の積
dtypeNone積の計算に使うデータ型(int64, float64など)
outNone出力を格納する配列(ブロードキャスト可能)
keepdimsFalse積を計算後も元の次元数を保つかどうか
initial1積の初期値(0だと常に0になる)
whereTrue条件を満たす要素のみ積を計算
numpy.prod()の引数と説明
基本的な使い方(全要素の積)

配列 [1, 2, 3, 4] の全要素の積を計算(1×2×3×4 = 24)

import numpy as np

a = np.array([1, 2, 3, 4])
print(np.prod(a))  # 出力: 24
axisを使った例(行または列単位)

列方向に積を計算(1×3, 2×4)

b = np.array([[1, 2], [3, 4]])
print(np.prod(b, axis=0))  # 出力: [3 8]
dtypeの指定による精度確保

int16だとオーバーフローするが、int64により安全に計算可能。

c = np.array([1000, 1000, 1000], dtype=np.int16)
print(np.prod(c, dtype=np.int64))  # オーバーフロー回避
initialによる初期値指定

10を初期値として 10×2×3 = 60

d = np.array([2, 3])
print(np.prod(d, initial=10))  # 出力: 60
whereを用いた条件付き積

要素が2より大きいもののみ積に含める

e = np.array([1, 2, 3, 4])
print(np.prod(e, where=e > 2))  # 出力: 12(3×4)
numpy.prod()の備考
  • 配列内の要素の積を簡単に計算できる
  • 初期値(initial)や条件(where)の指定が可能
  • データ型(dtype)を指定できるためオーバーフローを防げる

numpy.mean()

np.mean()は、NumPy配列の要素の算術平均(平均値)を計算するメソッドです。

多次元配列に対してaxis引数を指定することで、特定の軸に沿った平均を取得できます。

dtypeを使って型を制御したり、whereによって条件付き平均を算出可能です。

大量のデータ処理において統計値を求める際に便利な関数です。

スクロールできます
引数名値の例説明
aarray_like(例: np.array([1,2,3]))平均を計算する対象の配列
axisNone, 0, 1, tuple平均を計算する軸。Noneなら全体。
dtypenp.float64, np.int64など計算時のデータ型を指定
outndarray(例: np.empty())結果を書き込む出力配列を指定
keepdimsTrue または False結果に元の次元を保持するかどうか
whereブール配列(例: [True, False, True])平均を計算する要素を条件で指定
numpy.mean()の引数と説明
a

配列全体の平均を計算しています。

import numpy as np
arr = np.array([1, 2, 3, 4])
result = np.mean(arr)
print(result)  # 出力: 2.5
axis

axis=0は列ごと、axis=1は行ごとの平均を計算します。

arr2d = np.array([[1, 2, 3], [4, 5, 6]])
result_axis0 = np.mean(arr2d, axis=0)
result_axis1 = np.mean(arr2d, axis=1)
print(result_axis0)  # [2.5 3.5 4.5]
print(result_axis1)  # [2. 5.]
dtype

計算時に浮動小数点型へ変換して精度を高めています。

arr = np.array([1, 2, 3], dtype=np.int32)
result = np.mean(arr, dtype=np.float64)
print(result)  # 出力: 2.0(float64として処理)
out

計算結果を既存の配列に書き込んでいます。

arr = np.array([1, 2, 3, 4])
out_arr = np.empty(1)
np.mean(arr, out=out_arr)
print(out_arr)  # 出力: [2.5]
keepdims

次元を保持して、元の形状と整合性を保つ平均値を出力します。

arr2d = np.array([[1, 2], [3, 4]])
result = np.mean(arr2d, axis=1, keepdims=True)
print(result)
# 出力:
# [[1.5]
#  [3.5]]
where

Trueに該当する要素だけを対象に平均値を算出します。

arr = np.array([1, 2, 3, 4])
condition = np.array([True, False, True, False])
result = np.mean(arr, where=condition)
print(result)  # 出力: 2.0
numpy.mean()の備考
  • 多次元配列に対応
  • 型や出力の制御が可能
  • 条件付き計算に対応

numpy.std()

numpy.std()は、配列内の要素の標準偏差(Standard Deviation)を計算するメソッドです。

標準偏差はデータのばらつきを示す統計指標で、平均からの偏差の平方和の平均の平方根として定義されます。

多次元配列に対してはaxisを指定して特定軸の標準偏差を求めることが可能です。

分散の自由度補正(不偏分散or母分散)もddofパラメータで調整できます。

スクロールできます
引数名値の例説明
a配列, リスト標準偏差を計算する対象の配列
axis0, 1, -1, None標準偏差を計算する軸。Noneの場合は全体に対して計算
dtypenp.float64など計算時のデータ型。精度制御に利用
out既存配列結果を代入するための配列を指定
ddof0, 1など自由度調整。1の場合は不偏標準偏差(N-1)になる
keepdimsTrue, False結果において元の次元を保持するかどうか
numpy.std()の引数と説明
a(基本的な使用)

配列全体の標準偏差(母標準偏差, ddof=0)を計算します。

import numpy as np

data = np.array([1, 2, 3, 4, 5])
result = np.std(data)
print(result)
axis(行単位での標準偏差)

各列ごとの標準偏差を計算します。結果は [1.0, 1.0]。

data = np.array([[1, 2], [3, 4]])
result = np.std(data, axis=0)
print(result)
dtype(整数を浮動小数で計算)

計算時の精度をfloat64に指定して高精度な標準偏差を算出。

data = np.array([1, 2, 3], dtype=np.int32)
result = np.std(data, dtype=np.float64)
print(result)
ddof(不偏標準偏差)

分母をNではなくN-1とすることで「不偏標準偏差」を計算します。

data = np.array([1, 2, 3, 4])
result = np.std(data, ddof=1)
print(result)
keepdims(元の次元を保持)

行ごとの標準偏差を計算しつつ、出力形状を(2, 1)に保ちます。

data = np.array([[1, 2], [3, 4]])
result = np.std(data, axis=1, keepdims=True)
print(result)
out(既存配列に代入)

出力結果を新しく生成せず、既存配列outputに格納します。

data = np.array([1, 2, 3])
output = np.empty(1)
np.std(data, out=output)
print(output)
numpy.std()の備考
  • 統計的なばらつきを簡単に計算できる
  • 軸を指定して多次元配列の標準偏差が求められる
  • 自由度補正(不偏・母標準偏差)を選べる

numpy.min()

numpy.min()は、指定された配列内で最小値を返す関数です。

多次元配列においてもaxisを指定することで、行や列ごとの最小値を取得できます。

また、out引数で結果を格納する出力先を指定でき、keepdimsによって元の次元構造を維持可能です。

条件付きで最小値を取得するwhere引数もあり、柔軟なデータ処理が可能です。

スクロールできます
引数名説明
aarray_like最小値を計算する対象の配列。
axisint, tuple, None最小値を計算する軸。Noneの場合は全体から最小値を取得。
outndarray or None結果を格納する配列(省略可能)。
keepdimsboolTrueにすると元の配列と同じ次元数の出力になる(次元を保持)。
initialscalar自由度調整。1の場合は不偏標準偏差(N-1)になる
wherearray_like条件を満たす要素だけに対して最小値を計算。
numpy.min()の引数と説明
基本的な使用(aのみ)

配列全体の最小値1を返します。

import numpy as np

arr = np.array([4, 2, 7, 1])
print(np.min(arr))
axisの使用(2次元配列)

各行に対して最小値を計算 → 出力: [2, 1]

arr = np.array([[4, 2, 7], [3, 5, 1]])
print(np.min(arr, axis=1))
outの使用

最小値5をresultに格納します。

arr = np.array([10, 20, 5])
result = np.empty(1)
np.min(arr, out=result)
print(result)
keepdims=True

次元を保持して各行の最小値を返す → [[1], [5]]

arr = np.array([[3, 1], [7, 5]])
print(np.min(arr, axis=1, keepdims=True))
initialを指定

initial=5を指定することで、最小値は5と比較され、結果は5。

arr = np.array([10, 15])
print(np.min(arr, initial=5))  # 通常より小さい初期値を指定
whereを使った条件付き計算

arr > 5 に該当する値(10, 8)の中から最小値を取得 → 結果は 8

arr = np.array([10, 3, 8, 1])
cond = arr > 5
print(np.min(arr, where=cond, initial=100))
numpy.min()の備考
  • 配列内の最小値を簡単に取得できる
  • 柔軟な条件指定が可能
  • 次元保持や出力先指定などの高度な制御が可能

numpy.max()

numpy.max()は、NumPy配列の中から最大値を取得する関数です。

多次元配列の場合はaxisを指定することで、行方向や列方向に沿った最大値を簡単に求められます。

whereを使うことで、特定の条件を満たす要素のみから最大値を抽出可能です。

統計的な分析やデータのスケーリング処理などで広く利用されます。

スクロールできます
引数名説明
anp.array([…])最大値を取得したい対象の配列(必須)
axis0, 1, None最大値を取得する軸。Noneの場合は全体から1つの最大値を返す
outnp.empty(…)結果を格納する配列(ブロードキャスト可能な形状である必要あり)
keepdimsTrue, FalseTrueにすると、出力の次元数を入力と同じに保持
initialfloat(‘-inf’)など最初の比較値。これ以下の要素がなければこの値が返される
wherecondition array条件を満たす要素のみを対象として最大値を求める
numpy.max()の引数と説明
axisの使用例

列方向(axis=0)に沿って最大値を取得 → [4, 5, 6] が出力されます。

import numpy as np

a = np.array([[1, 5, 3], [4, 2, 6]])
result = np.max(a, axis=0)
print(result)
outの使用例

最大値3をout_arrayに格納して再利用可能にします。

a = np.array([1, 3, 2])
out_array = np.empty(1)
np.max(a, out=out_array)
print(out_array)
keepdimsの使用例

行ごとの最大値を求めつつ、元の2次元構造 [ [5], [3] ] を保持します。

a = np.array([[1, 5], [2, 3]])
result = np.max(a, axis=1, keepdims=True)
print(result)
initialの使用例

最大値比較の初期値を-1に設定。配列のすべての値より小さいため、-1が結果に。

a = np.array([-5, -10, -15])
result = np.max(a, initial=-1)
print(result)
whereの使用例

条件 a > 3 に合致する [5, 9] の中で最大値9を返します。

a = np.array([1, 5, 2, 9])
condition = a > 3
result = np.max(a, where=condition, initial=-1)
print(result)
numpy.max()の備考
  • 多次元配列に対して軸を指定し、特定の行や列ごとの最大値を取得
  • 条件指定により、特定の条件を満たす要素のみから最大値を抽出可能
  • 結果の次元を保持するオプションがあり、配列の形状を保ち集約結果を得る

numpy.save()

numpy.save()は、NumPy配列をバイナリ形式(.npyファイル)で保存する関数です。

効率的に配列のデータとメタ情報(形状やデータ型など)を保存し、後で高速に読み込みが可能です。

ファイル名と保存する配列を指定するだけで使えてデータの永続化ができます。

複数の配列をまとめて保存したい場合は、numpy.savez()を利用します。

スクロールできます
引数名説明
filestr or file-like保存先のファイル名(拡張子は.npyを自動的に追加)またはファイルオブジェクト
arrndarray保存対象のNumPy配列
allow_pickleboolPythonオブジェクトのピクル化を許可するか(デフォルトはTrue)
fix_importsboolPython2からの互換性のためのインポート修正を行うか(デフォルトTrue)
protocolint or Noneピクル化のプロトコルバージョン(Noneはデフォルトのプロトコル)
numpy.save()の引数と説明
file(必須)

配列をarray_data.npyというファイル名で保存します。

拡張子は.npyを自動的に追加します。

import numpy as np

arr = np.array([1, 2, 3])
np.save('array_data.npy', arr)
allow_pickle

Pythonオブジェクト(辞書など)を含む配列を保存する際に、allow_pickle=Trueにしてピクル化を許可します。

安全性の理由でFalseにすると例外が発生します。

import numpy as np

arr = np.array([{'a': 1}, {'b': 2}])
np.save('pickle_array.npy', arr, allow_pickle=True)
fix_imports

Python2と3間の互換性を保つためにインポートの修正を行います。

通常はデフォルトのTrueで問題ありません。

import numpy as np

arr = np.array([1, 2, 3])
np.save('fixed_array.npy', arr, fix_imports=True)
protocol

ピクル化で使うプロトコルのバージョンを指定します。

バージョンによってファイルサイズや互換性が異なります。

Noneでデフォルトです。

import numpy as np

arr = np.array([1, 2, 3])
np.save('protocol_array.npy', arr, protocol=4)
numpy.save()の備考
  • NumPy配列をバイナリ形式(.npyファイル)で高速かつ効率的に保存
  • Pythonオブジェクトのピクル化を許可するオプションがあり、複雑なデータ構造も保存可能
  • ファイル名に自動で拡張子「.npy」を追加し、ファイルの読み書き可能

numpy.load()

numpy.load()は、NumPyのバイナリ形式(.npyまたは.npz)で保存された配列データを読み込む関数です。

高速に配列を復元でき、保存時のデータ型や形状も保持されます。

圧縮されたアーカイブ(.npz)もサポートし、複数配列の同時読み込みが可能です。

また、allow_pickleオプションでPythonオブジェクトの読み込みも制御できます。

スクロールできます
引数名デフォルト値説明
fileなし読み込むファイル名(文字列)またはファイルオブジェクト。
.npyまたは.npzファイルを指定。
mmap_modeNoneメモリマップモード。’r’, ‘r+’, ‘w+’, ‘c’のいずれか。
指定するとファイルをメモリマップで開く。
allow_pickleFalseピクル化されたオブジェクトの読み込みを許可するかどうか。
セキュリティ上の理由でデフォルトはFalse。
fix_importsTruePython2のpickleとの互換性を保つかどうか。
Python3でのみ有効。
encoding‘ASCII’ピクル読み込み時のエンコーディング。
デフォルトはASCII。
numpy.load()の引数と説明
import numpy as np

# 配列を保存
arr = np.array([1, 2, 3, 4])
np.save('sample.npy', arr)
スクロールできます
引数名サンプルコード説明
filedata = np.load(‘sample.npy’)ファイル名を指定して、保存済みのNumPy配列を読み込む。
mmap_modedata = np.load(‘sample.npy’, mmap_mode=’r’)ファイルを読み取り専用でメモリマップし、大きなファイルを効率的に扱う。
allow_pickleピクル化されたPythonオブジェクトを含む配列を保存し、許可して読み込む。
fix_importsdata = np.load(‘sample.npy’, fix_imports=True)Python2で保存されたpickleデータとの互換性を保持しつつ読み込む。
encodingdata = np.load(‘sample.npy’, encoding=’latin1′)ピクル読み込み時のエンコーディングをASCII以外(例:latin1)に指定する。
numpy.load()の備考
  • NumPyのバイナリファイル(.npyや.npz)から高速に配列データを読み込み可能
  • mmap_mode引数でメモリマップを利用し、大きなファイルでも効率的に部分的に読み込める
  • allow_pickleオプションを使うことで、Pythonオブジェクトを含む配列の読み込みを制御

numpy.savetxt()

numpy.savetxt()は、NumPy配列のデータをテキストファイルに保存する関数です。

データをCSVやスペース区切りなどのテキスト形式で書き出すことができ、フォーマット指定や区切り文字の設定が可能です。

主に数値データの保存に使われ、ファイルの読み込みや他プログラムとのデータ連携に便利です。

スクロールできます
引数名値の例説明
fname‘data.txt’保存するファイル名(文字列)またはファイルオブジェクト
Xnumpy配列保存するNumPy配列
fmt‘%0.18e’, ‘%d’, ‘%.2f’ファイルに保存する際のフォーマット指定(デフォルトは科学的記数法の文字列)
delimiter‘ ‘, ‘,’, ‘\t’区切り文字。デフォルトはスペース
newline‘\n’行の区切り文字。デフォルトは改行
headerファイルの先頭に追加する文字列
footerファイルの末尾に追加する文字列
comments‘#’ヘッダーやフッターの前に付けるコメント文字列(デフォルトは’#’)
encodingNone, ‘utf-8’などファイルのエンコーディング。デフォルトは環境依存
numpy.savetxt()の引数と説明
fname(ファイル名指定)

配列arrをテキストファイルoutput.txtに保存する。

import numpy as np

arr = np.array([1, 2, 3, 4])
np.savetxt('output.txt', arr)
fmt(フォーマット指定)

小数点以下2桁の浮動小数点形式で保存する。

arr = np.array([1.23456, 2.34567, 3.45678])
np.savetxt('output_fmt.txt', arr, fmt='%.2f')
delimiter(区切り文字指定)

配列をカンマ区切りのCSV形式で保存する。

arr = np.array([[1, 2], [3, 4]])
np.savetxt('output_csv.txt', arr, delimiter=',')
headerとfooter(ヘッダーとフッターの追加)

ファイルの先頭と末尾に指定文字列を追加する。

arr = np.array([10, 20, 30])
np.savetxt('output_header.txt', arr, header='# This is header', footer='# This is footer')
comments(コメント文字の変更)

ヘッダーの前に//を付けてコメントにする。

arr = np.array([10, 20, 30])
np.savetxt('output_comments.txt', arr, header='Header', comments='// ')
encoding(エンコーディング指定)

UTF-8エンコードでファイルを保存する(日本語などを含む場合に有効)。

arr = np.array([100, 200, 300])
np.savetxt('output_utf8.txt', arr, encoding='utf-8')
numpy.savetxt()の備考
  • テキストファイル形式で保存
  • 柔軟なフォーマット指定
  • 高速かつシンプル

numpy.loadtxt()

numpy.loadtxt()は、テキストファイルやファイルのようなオブジェクトからデータを読み込み、NumPy配列として返します。

主に数値データを含むCSVやスペース区切りのファイルから効率的に読み込む際に使われます。

区切り文字やスキップ行数などを指定でき、柔軟にデータのフォーマットに対応可能です。

スクロールできます
引数名型・値の例説明
fnamestr, file-like object読み込むファイルのパスやファイルオブジェクト
dtypedata-type読み込むデータの型(例: float, int)
commentsstrコメント行の先頭文字(デフォルトは#)
delimiterstr区切り文字(例: ‘,’, ‘ ‘など。デフォルトは任意の空白)
convertersdict列ごとに適用する変換関数の辞書(例: {0: func})
skiprowsintスキップする行数(ファイルの先頭から)
usecolsintまたはリスト読み込む列のインデックス(例: 0、[0,2])
unpackbool真の場合、列ごとに分解して返す(Trueは複数変数へのアンパック)
ndminint最低次元数(戻り値の配列の次元数を指定)
encodingstrファイルの文字コード(例: ‘utf-8’)
max_rowsint読み込む最大行数
numpy.loadtxt()の引数と説明
fname

ファイル名を指定してファイルを読み込みます。

import numpy as np
data = np.loadtxt('data.txt')
print(data)
dtype

読み込んだデータの型を整数型に指定します。

data = np.loadtxt('data.txt', dtype=int)
print(data)
comments

;で始まる行をコメントとして無視します。

data = np.loadtxt('data_with_comments.txt', comments=';')
print(data)
delimiter

カンマ区切りのCSVファイルを読み込みます。

data = np.loadtxt('data.csv', delimiter=',')
print(data)
converters

1列目の値を読み込む際に10倍する変換をかけています。

def convert_func(s):
    return float(s.decode('utf-8')) * 10

data = np.loadtxt('data.txt', converters={0: convert_func})
print(data)
skiprows

先頭2行をスキップしてデータを読み込みます。

data = np.loadtxt('data.txt', skiprows=2)
print(data)
usecols

0列目と2列目のみ読み込みます。

data = np.loadtxt('data.txt', usecols=[0, 2])
print(data)
unpack

複数列をそれぞれ別の変数として受け取ります。

x, y = np.loadtxt('data.txt', unpack=True)
print(x)
print(y)
ndmin

読み込み結果を最低2次元の配列にします。

data = np.loadtxt('data.txt', ndmin=2)
print(data.shape)
encoding

UTF-16エンコードのファイルを読み込みます。

data = np.loadtxt('data_utf16.txt', encoding='utf-16')
print(data)
max_rows

先頭3行のみ読み込みます。

data = np.loadtxt('data.txt', max_rows=3)
print(data)
numpy.loadtxt()の備考
  • 数値データを含むテキストファイルからNumPy配列として返す
  • 細かい読み込み設定が可能
  • 様々な形式のファイル読み込みに利用

numpy.all()

numpy.all()は、配列内の全ての要素が条件を満たすかどうかを判定します。

配列の各要素が真(True)であればTrueを返し、一つでも偽(False)があればFalseを返します。

軸(axis)を指定することで、特定の次元ごとに判定可能です。

論理演算や条件判定の際に便利なメソッドです。

スクロールできます
引数名値の例説明
andarray真偽判定する対象の配列。
axis0, 1, None判定を行う軸。指定なし(None)は全要素を対象。
outndarray(省略可)結果を書き込む配列。省略時は新しい配列が返される。
keepdimsTrue or False結果の次元を保つかどうか。Trueなら元の次元数を維持。
wherearray_like真偽判定を行う位置を指定するブール配列。
numpy.all()の引数と説明
axis

全体としては偽(False)だが、軸を指定すると列や行ごとに判定できる。

import numpy as np

arr = np.array([[True, True], [True, False]])

# axis=None (デフォルト): 全要素がTrueか判定
print(np.all(arr))  # False

# axis=0: 各列ごとに判定
print(np.all(arr, axis=0))  # [True, False]

# axis=1: 各行ごとに判定
print(np.all(arr, axis=1))  # [True, False]
out

結果をout配列に格納。新しい配列を生成せずに結果を得られる。

import numpy as np

arr = np.array([True, True, False])
out_arr = np.empty((), dtype=bool)

np.all(arr, out=out_arr)
print(out_arr)  # False
keepdims

結果の次元数を元の配列の次元数と同じに保持して返す。

import numpy as np

arr = np.array([[True, True], [True, False]])

result = np.all(arr, axis=1, keepdims=True)
print(result)  # [[ True]
               #  [False]]
print(result.shape)  # (2, 1)
where

whereで指定した位置だけを判定対象にする。Falseの要素は無視される。

import numpy as np

arr = np.array([True, False, True, False])
mask = np.array([True, False, True, False])  # 判定対象の位置指定

result = np.all(arr, where=mask)
print(result)  # True
numpy.all()の備考
  • 全要素の論理積を判定
  • 軸(axis)指定で部分判定が可能
  • keepdimsやwhere引数で柔軟な判定が可能

numpy.any()

numpy.any()は、配列内の要素のうち少なくとも1つがTrueであればTrueを返します。

全ての要素がFalseの場合のみFalseを返します。

軸(axis)を指定すると、その軸ごとに判定が可能で部分的な真偽値を取得できます。

条件の存在チェックやフィルタリング処理に使われます。

スクロールできます
引数名値の例説明
axis0, 1, None真偽判定を行う軸を指定。Noneは全体を対象。
out配列出力配列。結果を格納する配列を指定可能(省略可)。
keepdimsTrue or False結果の次元を元の配列に合わせて維持するかどうか。
whereブール配列Trueの位置だけを判定対象にするマスク。
numpy.any()の引数と説明
import numpy as np

arr = np.array([[0, 1, 0],
                [0, 0, 0]])

# 1. 全体でTrueがあるか判定
result1 = np.any(arr)
print(result1)
# → True(0以外の要素が1つあるため)

# 2. 行ごとにTrueがあるか判定
result2 = np.any(arr, axis=1)
print(result2)
# → [True, False](1行目はTrue、2行目はFalse)

# 3. 出力配列を指定
out_arr = np.empty(2, dtype=bool)
np.any(arr, axis=1, out=out_arr)
print(out_arr)
# → [ True False]

# 4. 次元を保持
result4 = np.any(arr, axis=1, keepdims=True)
print(result4)
# → [[ True]
#     [False]]

# 5. where引数を使い、一部の要素だけ判定
mask = np.array([[True, False, True],
                 [False, True, False]])
result5 = np.any(arr, where=mask)
print(result5)
# → True(マスクTrueの位置で1があるため)
numpy.any()の備考
  • 配列内に少なくとも1つでもTrueがあればTrueを返し、全てFalseの場合のみFalseを返す
  • axis引数を指定することで、部分的な判定結果を得られる
  • 出力の形状調整や判定対象の部分指定など操作可能

この記事を書いた人

sugiのアバター sugi SUGI

【経歴】玉川大学工学部卒業→新卒SIer企業入社→2年半後に独立→プログラミングスクール運営/受託案件→フリーランスエンジニア&SEOコンサル→Python特化のコンテンツサイトJob Code運営中

目次