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

Pythonで2つの1次元配列のクロネッカー積を求める方法

PythonのNumPyでは、numpy.kron()メソッドを使うことで、2つの1次元配列のクロネッカー積(Kronecker product)を簡単に計算できます。クロネッカー積とは、第2の配列を第1の配列の各要素でスケーリングしたブロックから構成される複合配列のことです。

この関数は、aとbの次元数が同じであることを前提としており、必要に応じて次元数が小さい方にサイズ1の軸が先頭に追加されます。a.shape = (r0, r1, ..., rN)、b.shape = (s0, s1, ..., sN) の場合、クロネッカー積の形状は (r0*s0, r1*s1, ..., rN*sN) になります。

各要素は、aとbの要素同士の積として以下のように整理されます。

kron(a,b)[k0,k1,...,kN] = a[i0,i1,...,iN] * b[j0,j1,...,jN]

手順

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

import numpy as np

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

arr1 = np.array([1, 10, 100])
arr2 = np.array([5, 6, 7])

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

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つの配列のクロネッカー積を求めるには、numpy.kron()メソッドを使用します。

print("\nResult (Kronecker product)...\n",np.kron(arr1, arr2))

サンプルコード

import numpy as np

# array()メソッドを使って2つのNumPyの1次元配列を作成
arr1 = np.array([1, 10, 100])
arr2 = np.array([5, 6, 7])

# 配列を表示
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.kron()メソッドでクロネッカー積を計算
print("\nResult (Kronecker product)...\n",np.kron(arr1, arr2))

実行結果

Array1...
[ 1 10 100]

Array2...
[5 6 7]

Dimensions of Array1...
1

Dimensions of Array2...
1

Shape of Array1...
(3,)

Shape of Array2...
(3,)

Result (Kronecker product)...
[  5   6   7  50  60  70 500 600 700]

このように、numpy.kron()を使えば、1行のコードで2つの1次元配列のクロネッカー積を求めることができます。結果を見ると、第1の配列の各要素(1、10、100)に対して、第2の配列全体(5、6、7)がスケーリングされて並んでいることがわかります。

  1. Python(NumPy)で4次元配列と3次元配列のクロネッカー積を計算する方法

    クロネッカー積(Kronecker Product)とは PythonのNumPyでは、numpy.kron()メソッドを使うことで、4次元配列と3次元配列のように次元数が異なる配列同士でもクロネッカー積を簡単に求めることができます。クロネッカー積とは、第1の配列の各要素によって第2の配列全体をスケーリングしたブロックから構成される複合配列のことです。 kron()関数は、引数aとbの次元数が同じであることを前提としており、次元数が異なる場合は、小さい方の配列の先頭にサイズ1の軸が自動的に追加されます。a.shape = (r0, r1, …, rN)、b.shape = (s0, s1, …

  2. Pythonで2つのリストの要素の積からk番目に大きい値を求めるプログラム

    整数を含む2つのリスト p と q が与えられたとします。この問題では、両リストの要素をすべて掛け合わせた積の中から、k番目に大きい値(インデックスは0から開始)を求めます。 たとえば、入力が p = [2, 5]、q = [6, 8]、k = 2 の場合、出力は 16 になります。 考えられる積は次の4つです。 2 × 6 = 12 2 × 8 = 16 5 × 6 = 30 5 × 8 = 40 これらを降順に並べると [40, 30, 16, 12] となるため、インデックス2の要素、すなわち求める答えは 16 です。 解法のアプローチ すべての組み合わせの積を計算してソートする方法も