随机矩阵的NumPy张量/Kronecker积

2024-06-02 07:56:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图计算张量积(更新:我想要的实际上是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]]

这两个都不是我想要的。在

还有很多其他的问题和这个问题类似,但其中所建议的东西并没有起作用(或者我错过了那些有用的问题)。也许“张量积”的意思和我想的稍有不同,但上面的例子应该能说明这一点。在


Tags: 方法np原因矩阵product向量命名print
1条回答
网友
1楼 · 发布于 2024-06-02 07:56:20

thisthis问题的答案中,我了解到你想要的是“Kronecker product”。它实际上是内置在Numpy中的,所以只要这样做:

np.kron(flip, flip)

但是,如果您想使reshape方法起作用,请首先重新排列张量中的行:

^{pr2}$

相关问题 更多 >