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

Python・NumPyで2つの1次元配列の離散線形畳み込みを計算する方法(np.convolve)

PythonのNumPyで2つの1次元シーケンス(配列)の離散線形畳み込みを計算するには、numpy.convolve()メソッドを使用します。

畳み込みとは?

畳み込み演算子は主に信号処理の分野で登場し、線形時不変(LTI)システムが信号へ与える影響をモデル化する際に使われます。また、確率論においては、2つの独立な確率変数の和の分布が、それぞれの分布の畳み込みとして表されることでも知られています。

なお、引数 v の方が a より長い場合は、計算前に自動的に配列が入れ替えられます。このメソッドは、av の離散線形畳み込みを返します。

パラメータの説明

  • 第1引数 a: 最初の1次元入力配列
  • 第2引数 v: 2番目の1次元入力配列
  • 第3引数 mode(省略可能): 出力のサイズを制御します。'full'(デフォルト:全ての重なりを含む完全な畳み込み)、'same'(入力と同じ長さの出力)、'valid'(完全に重なる部分のみ)から選択できます。

実装の手順

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

import numpy as np

array()メソッドを使って、2つのNumPyの1次元配列を作成します。

arr1 = np.array([1, 2, 3])
arr2 = np.array([0, 1, 0.5])

作成した配列を表示します。

print("Array1...\n",arr1)
print("\nArray2...\n",arr2)

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

print("\nDimensions of Array1...\n",arr1.ndim)
print("\nDimensions of Array2...\n",arr2.ndim)

両方の配列の形状(shape)を確認します。

print("\nShape of Array1...\n",arr1.shape)
print("\nShape of Array2...\n",arr2.shape)

2つの1次元シーケンスの離散線形畳み込みを返すには、numpy.convolve()メソッドを使用します。

print("\nResult....\n",np.convolve(arr1, arr2))

サンプルコード全体

import numpy as np

# array()メソッドで2つのNumPy 1次元配列を作成
arr1 = np.array([1, 2, 3])
arr2 = np.array([0, 1, 0.5])

# 配列を表示
print("Array1...\n",arr1)
print("\nArray2...\n",arr2)

# 両方の配列の次元数を確認
print("\nDimensions of Array1...\n",arr1.ndim)
print("\nDimensions of Array2...\n",arr2.ndim)

# 両方の配列の形状を確認
print("\nShape of Array1...\n",arr1.shape)
print("\nShape of Array2...\n",arr2.shape)

# numpy.convolve()で離散線形畳み込みを計算
print("\nResult....\n",np.convolve(arr1, arr2))

実行結果

Array1...
[1 2 3]

Array2...
[0. 1. 0.5]

Dimensions of Array1...
1

Dimensions of Array2...
1

Shape of Array1...
(3,)

Shape of Array2...
(3,)

Result....
[0. 1. 2.5 4. 1.5]

このように、要素数3の配列同士の畳み込み結果は、要素数 3 + 3 − 1 = 5 の配列として得られます。デフォルトのモードは 'full' であり、すべての重なりを考慮した完全な畳み込みが返されていることがわかります。

  1. 【Python入門】numpy.linalg.cholesky()でコレスキー分解を求める方法

    線形代数におけるコレスキー分解(Cholesky decomposition)とは、エルミート行列かつ正定値である正方行列 a を、下三角行列 L とその共役転置 LH の積「L * LH」に分解する手法です。NumPyでは numpy.linalg.cholesky() メソッドを使うことで、この分解を簡単に求めることができます。numpy.linalg.cholesky()メソッドの概要numpy.linalg.cholesky() は、引数として渡された正方行列のコレスキー分解を計算し、下三角行列 L を返します。このメソッドには以下のような特徴があります。前提条件: 入力行列 a はエ

  2. Python Pandas入門:インデックス値のメモリ使用量を確認する方法

    Pandasでインデックス値が占有しているメモリ使用量を確認したい場合は、index.memory_usage() メソッドを使用します。このメソッドは、インデックスが消費しているメモリ量をバイト単位で返してくれます。memory_usage()メソッドの基本的な使い方まず、必要なライブラリをインポートします。import pandas as pd次に、インデックスを作成します。index = pd.Index([15, 25, 35, 45, 55])作成したインデックスを表示してみましょう。print(Pandas Index...\n, index)そして、値のメモリ使用量を取得します。