Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでn次の離散差分を計算する方法 ― numpy.diff()の使い方を解説

n次の離散差分を計算するには、numpy.diff()メソッドを使用します。1階差分は、指定した軸に沿って out[i] = a[i+1] - a[i] として求められ、それより高次の差分は diff を再帰的に適用することで計算されます。

diff() メソッドは n 次の差分を返します。出力の形状は axis で指定した軸を除いて入力配列 a と同じであり、その軸のサイズだけが n だけ小さくなります。出力のデータ型は、a の任意の2要素間の差分の型と同じです。多くの場合これは a の型と一致しますが、顕著な例外として datetime64 型があります。この場合、出力配列は timedelta64 型になります。

各パラメータの意味は以下の通りです。

  • 第1引数: 入力配列
  • 第2引数(n): 差分を取る回数。0を指定すると入力はそのまま返されます
  • 第3引数(axis): 差分を計算する軸。デフォルトは最後の軸です
  • 第4引数(prepend / append): 差分計算の前に、指定した軸に沿って入力配列の先頭または末尾に追加する値。スカラー値は、軸方向に長さ1、その他の軸方向には入力配列と同じ形状を持つ配列へと拡張されます

手順

まず、必要なライブラリをインポートします。

import numpy as np

array() メソッドを使って numpy 配列を作成します。ここでは int 型の要素に nan を含めています。

arr = np.array([10, 15, 30, 65, 80, 87, np.nan])

配列を表示します。

print("Our Array...\n",arr)

配列の次元数を確認します。

print("\nDimensions of our Array...\n",arr.ndim)

配列のデータ型を取得します。

print("\nDatatype of our Array object...\n",arr.dtype)

numpy.diff() メソッドを使って離散差分を計算します。1階差分は指定した軸に沿って out[i] = a[i+1] - a[i] として求められ、高次の差分は diff を再帰的に適用して計算されます。

print("\nDiscrete difference..\n",np.diff(arr))

完全なコード例

import numpy as np

# array() メソッドで numpy 配列を作成
# int 型の要素に nan を含めている
arr = np.array([10, 15, 30, 65, 80, 87, np.nan])

# 配列を表示
print("Our Array...\n",arr)

# 次元数を確認
print("\nDimensions of our Array...\n",arr.ndim)

# データ型を確認
print("\nDatatype of our Array object...\n",arr.dtype)

# numpy.diff() メソッドで離散差分を計算
# 1階差分は out[i] = a[i+1] - a[i]、高次の差分は diff の再帰適用で求められる
print("\nDiscrete difference..\n",np.diff(arr))

実行結果

Our Array...
[10. 15. 30. 65. 80. 87. nan]

Dimensions of our Array...
1

Datatype of our Array object...
float64

Discrete difference..
[ 5. 15. 35. 15. 7. nan]

実行結果からわかるように、隣接する要素同士の差分が順に計算されています。なお、nan を含む要素との差分は nan になる点に注意してください。

  1. Pythonで配列(リスト)の合計を求める方法をわかりやすく解説

    この記事では、配列(リスト)の合計値を求めるという問題に対して、Pythonでの解決策とアプローチをわかりやすく解説します。 問題の定義 配列が入力として与えられたとき、その配列に含まれるすべての要素の合計を計算することを目標とします。 例えば、[1, 2, 3, 4, 5] という配列が与えられた場合、出力は 15 になります。 アプローチ1:ループを使った素朴な方法(総当たり法) 最も基本的な方法は、リストを先頭から順に走査し、各要素を合計用の変数に加算していくやり方です。手順は以下の通りです。 合計を格納する変数を 0 で初期化します。 for ループでリストの各要素を取り出し、順番に

  2. Pythonで正四面体の表面積を計算するプログラム(√3×a²の公式)

    本記事では、正四面体の表面積を求める問題の解き方とそのアプローチについて詳しく解説します。 問題文 正四面体の一辺の長さが与えられたとき、その正四面体の表面積を求める必要があります。 正四面体とは 正四面体(Tetrahedron)とは、三角形を底面としたピラミッドのような形状の立体図形です。4つの三角形の面(側面に3つ、底面に1つ)と、4つの頂点(角)を持つ立体オブジェクトです。 計算式 一辺の長さを a とすると、正四面体の表面積は次の公式で求められます。 表面積 = √3 × a² この公式をもとに、以下のように面積を計算する関数を定義します。 サンプルコード import math