我试图计算张量积(更新:我想要的实际上是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| |
我想把它展平为:
^{pr2}$不幸的是,我尝试的所有方法要么未能展平矩阵,要么展平太多,要么对条目进行置换,使某些列为空。更具体地说,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]]
这两个都不是我想要的。在
还有很多其他的问题和这个问题类似,但其中所建议的东西并没有起作用(或者我错过了那些有用的问题)。也许“张量积”的意思和我想的稍有不同,但上面的例子应该能说明这一点。在
从this和this问题的答案中,我了解到你想要的是“Kronecker product”。它实际上是内置在Numpy中的,所以只要这样做:
但是,如果您想使
^{pr2}$reshape
方法起作用,请首先重新排列张量中的行:相关问题 更多 >
编程相关推荐