我有一个长度为 m 的 n 个向量的数组。例如,对于n = 3,m = 2:
x = array([[1, 2], [3, 4], [5,6]])
我想将每个向量的外积与自身相乘,然后将它们连接成形状为(n, m, m)的方阵数组。所以对于x上面我会得到
array([[[ 1,  2],
        [ 2,  4]],
       [[ 9, 12],
        [12, 16]],
       [[25, 30],
        [30, 36]]])
我可以用这样的for循环来做到这一点
np.concatenate([np.outer(v, v) for v in x]).reshape(3, 2, 2)
是否有一个 numpy 表达式可以在没有 Pythonfor循环的情况下执行此操作?
额外的问题:由于外积是对称的,我不需要mxm乘法运算来计算它们。我可以从 numpy 获得这种对称优化吗?