numpy:重写外部乘积并以矢量形式添加对角线

瓦莱里亚

假设X是:

X = np.asarray(
   [0.5, 0.5],
   [0.87070241, 0.12929759],
   [0.97738616, 0.02261384],
   [0.99200957, 0.00799043]], dtype=np.float32)

对于每一行,我希望将一行变成对角矩阵,并从中减去外积,如下所示:

np.diagflat(X[i, :]) - np.outer(X[i, :], X[i, :])

对于任何索引i

当然,我可以只写一个for循环,i但是有什么方法可以向量化的形式进行?

我发现,似乎可以将减去的部分重写为:

X.T[:, None, :] * X.T[None, :]

但是仍然不知道如何在diagflat不添加for循环的情况下正确地在此处添加或与之等效的线索

欧林·布尔·博汉

可能有一种更具可读性的方法,但是:

(np.eye(2) * X[:, np.newaxis]) - (X[:, np.newaxis]) * X[..., np.newaxis]

应该做你想做的。

编辑:(np.eye(2)[np.newaxis] - X[:, np.newaxis]) * X[..., np.newaxis]从OP进行更正后,我的最初答案已更改

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过文字添加对角线

来自分类Dev

在div元素的底部/顶部添加对角线边框?

来自分类Dev

在2D数组上添加对角线

来自分类Dev

在表格中添加对角线和虚线规则

来自分类Dev

如何在PRROC的ROC曲线图上添加对角线?

来自分类Dev

在Matlab中仅计算矩阵乘积的对角线

来自分类Dev

在Matlab中仅计算矩阵乘积的对角线

来自分类Dev

填写numpy数组的对角线失败

来自分类Dev

数组的numpy和反对角线

来自分类Dev

多维numpy数组的对角线

来自分类Dev

NumPy:对角线元素的点积

来自分类Dev

视线对角线

来自分类Dev

映射对角线

来自分类Dev

从给定的numpy数组创建块对角线numpy数组

来自分类Dev

在不使用numpy的情况下获得对角线?

来自分类Dev

Numpy Array忽略对角线的最小值

来自分类Dev

修改多维numpy数组中的对角线

来自分类Dev

使用numpy将矩阵的对角线归零

来自分类Dev

带有交替值的numpy矩阵对角线填充

来自分类Dev

numpy填充3D阵列的对角线0

来自分类Dev

在不使用numpy的情况下获得对角线?

来自分类Dev

修改多维numpy数组中的对角线

来自分类Dev

如何使用numpy将对角线元素彼此相乘?

来自分类Dev

NASM:在表格中添加主要对角线的编号

来自分类Dev

在对角线添加两个标签

来自分类Dev

使用 R 添加矩阵的对角线

来自分类Dev

Matlab有效地获取矩阵乘积的对角线值

来自分类Dev

主对角线变成反对角线

来自分类Dev

更改矩阵中心对角线旁边的对角线