【发布时间】:2014-11-01 06:50:06
【问题描述】:
我正在尝试计算多个的 张量积(更新:我想要的实际上称为 Kronecker product,这种命名混乱是我找不到 np.kron 的原因)矩阵,这样我就可以对向量应用变换,这些向量本身就是多个向量的张量积。我在正确展平结果时遇到了麻烦。
例如,假设我想计算 [[0,1],[1,0]] 与自身的张量积。结果应该是这样的:
| 0*|0,1| 1*|0,1| |
| |1,0| |1,0| |
| |
| 1*|0,1| 0*|0,1| |
| |1,0| |1,0| |
然后我想将其展平为:
| 0 0 0 1 |
| 0 0 1 0 |
| 0 1 0 0 |
| 1 0 0 0 |
不幸的是,我尝试的所有方法要么无法展平矩阵,要么过于展平矩阵,要么置换条目以使某些列为空。更具体地说,python程序的输出:
import numpy as np
flip = np.matrix([[0, 1], [1, 0]])
print np.tensordot(flip, flip, axes=0)
print np.reshape(np.tensordot(flip, flip, axes=0), (4, 4))
是
[[[[0 0]
[0 0]]
[[0 1]
[1 0]]]
[[[0 1]
[1 0]]
[[0 0]
[0 0]]]]
[[0 0 0 0]
[0 1 1 0]
[0 1 1 0]
[0 0 0 0]]
这两个都不是我想要的。
还有很多其他类似的问题,但其中建议的事情没有奏效(或者我可能错过了那些有效的问题)。也许“张量积”的含义与我想象的略有不同;但是上面的例子应该说清楚了。
【问题讨论】: