假設我們有 2 個 2X2 numpy 陣列:
X=np.array([[0,1],[1,0]])
和
I=np.array([[1,0],[0,1]])
考慮 Kronecker 產品
XX=X^X
我讓符號^成為 Kronecker 產品的符號。這可以通過numpy.kron()python中的函式輕松計算:
import numpy as np
kronecker_product = np.kron(X, X)
現在,假設我們要計算
XX=I^X^X
numpy.kron()只接受兩個陣列作為引數,并期望它們具有相同的維度。如何numpy.kron()在 python 中使用或其他技術執行此操作?
uj5u.com熱心網友回復:
與這樣的事情一樣,請嘗試:
XX = np.kron(I, np.kron(X, X))
輸出:
>>> XX
array([[0, 0, 0, 1, 0, 0, 0, 0],
[0, 0, 1, 0, 0, 0, 0, 0],
[0, 1, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 1],
[0, 0, 0, 0, 0, 0, 1, 0],
[0, 0, 0, 0, 0, 1, 0, 0],
[0, 0, 0, 0, 1, 0, 0, 0]])
您可以嵌套呼叫kron任意次數。例如,對于XX = A^B^C^D^E,使用
XX = np.kron(A, np.kron(B, np.kron(C, np.kron(D, E))))
如果您不喜歡那里的冗長,您可以為np.kron以下內容創建別名:
k = np.kron
XX = k(A, k(B, k(C, k(D, E))))
或者,更好的是,使用reducePython 內置模塊functools以更具可讀性的方式執行此操作:
import functools as ft
lst = [A, B, C, D, E]
XX = ft.reduce(lambda x, y: np.kron(x, y), lst)
注意:我測驗了所有這些并且它完美地作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/386031.html
標籤:Python 数组 麻木的 kronecker-product
