gpt4 book ai didi

python - (M,M,N)或类似数组中连续方形数组的累积矩阵乘法?

转载 作者:太空宇宙 更新时间:2023-11-04 03:46:24 26 4
gpt4 key购买 nike

假设我在单个 MxMxN 数组中有 N 个 MxM 数组。 numpy 中是否有任何简单的方法来对连续的 MxM 数组进行累积矩阵乘法(可以覆盖 MxMxN 数组)。我可以使用如下所示的循环来完成,但我想知道是否有更好的方法?请注意,MxMxN 的顺序并不特殊,我可以很容易地使用 NxMxM 或其他东西。

import numpy as np
a = np.arange(4).reshape((2,2))
n=3
b = np.dstack((a,)*n)
print(b[:,:,0])
#[b[:,:,k].dot(b[:,:, k - 1], out=b[:,:, k]) for k in range(1, n)]
for k in range(1, n):
b[:,:,k] = np.dot(b[:,:,k], b[:,:,k-1])
print(b[:, :, k])

我从中得到输出:

[[0 1]
[2 3]]
[[ 2 3]
[ 6 11]]
[[ 6 11]
[22 39]]

我还尝试了以下失败的列表理解:

[b[:,:,k].dot(b[:,:, k - 1], out=b[:,:, k]) for k in range(1, n)]

编辑:我对所有中间结果都很感兴趣,所以 b[:,:,0], b[:,:,0] x b[0:,:,1], b[:,:,0] x b[0:, :,1] x b[:,:,2] 等等 不仅仅是最后的 b[:,:,0] x b[0:,:,1] x ... x b[:,:,N-1]

最佳答案

对于 M*M*N 数组,如何:

reduce(np.dot, np.rollaxis(b, 2))

对于 Python 3,您需要从 functools 导入 reduce

关于python - (M,M,N)或类似数组中连续方形数组的累积矩阵乘法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23648377/

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