gpt4 book ai didi

python - 矩阵乘以 numpy 矩阵数组

转载 作者:行者123 更新时间:2023-11-30 23:14:15 24 4
gpt4 key购买 nike

我正在扩展旨在对 2 个向量执行函数的代码,以便它可以处理 2 个向量数组。我使用 numpy.dot 来计算两个 3x3 矩阵的乘积。现在我想用 3x3 矩阵数组来完成此操作。我无法弄清楚如何使用 numpy.einsum 来做到这一点,但我认为这就是我所需要的,我只是在努力理解它是如何工作的。

这是我想要使用循环的示例。有没有办法在没有循环的情况下做到这一点?

>>> import numpy as np
>>> m = np.arange(27).reshape(3,3,3)
>>> print m
array([[[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8]],

[[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17]],

[[18, 19, 20],
[21, 22, 23],
[24, 25, 26]]])
>>> m2 = np.zeros(m.shape)
>>> for i in length(m):
m2[i] = np.dot(m[i],m[i])
>>> print m2
array([[[ 15., 18., 21.],
[ 42., 54., 66.],
[ 69., 90., 111.]],

[[ 366., 396., 426.],
[ 474., 513., 552.],
[ 582., 630., 678.]],

[[ 1203., 1260., 1317.],
[ 1392., 1458., 1524.],
[ 1581., 1656., 1731.]]])

最佳答案

我在这篇文章中发现了 numpy.einsum 语法 Python, numpy, einsum multiply a stack of matrices这就是我想要的。我不清楚为什么这样做有效,并且想了解如何构建索引字符串以供将来使用。

>>> print np.einsum('fij,fjk->fik', V, V)
[[[ 15 18 21]
[ 42 54 66]
[ 69 90 111]]

[[ 366 396 426]
[ 474 513 552]
[ 582 630 678]]

[[1203 1260 1317]
[1392 1458 1524]
[1581 1656 1731]]]

关于python - 矩阵乘以 numpy 矩阵数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28892469/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com