gpt4 book ai didi

python - Numpy 中的矩阵乘法(将 2d 转换为 3d)

转载 作者:行者123 更新时间:2023-11-28 19:46:51 26 4
gpt4 key购买 nike

我有一个矩阵:

[
[ 5 10 15 20]
[ 6 12 18 24]
[ 7 14 21 28]
[ 8 16 24 32]
]

这是 (4x4)。

我想制作一个 (4x4x4) 矩阵,如下所示:

[
[
[ 5 0 0 0]
[ 6 0 0 0]
[ 7 0 0 0]
[ 8 0 0 0]]
[
[ 0 10 0 0]
[ 0 12 0 0]
[ 0 14 0 0]
[ 0 16 0 0]]
[
[ 0 0 15 0]
[ 0 0 18 0]
[ 0 0 21 0]
[ 0 0 24 0]]
[
[ 0 0 0 20]
[ 0 0 0 24]
[ 0 0 0 28]
[ 0 0 0 32]]
]

按矩阵执行此操作的最佳方法是什么(不使用 for 循环)?

最佳答案

你可以通过将它乘以一个带有额外轴的对角线数组来做到这一点:

>>> a = np.arange(16).reshape(4,4)
>>> a
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
>>> a*np.eye(4)[:,np.newaxis]
array([[[ 0., 0., 0., 0.],
[ 4., 0., 0., 0.],
[ 8., 0., 0., 0.],
[ 12., 0., 0., 0.]],

[[ 0., 1., 0., 0.],
[ 0., 5., 0., 0.],
[ 0., 9., 0., 0.],
[ 0., 13., 0., 0.]],

[[ 0., 0., 2., 0.],
[ 0., 0., 6., 0.],
[ 0., 0., 10., 0.],
[ 0., 0., 14., 0.]],

[[ 0., 0., 0., 3.],
[ 0., 0., 0., 7.],
[ 0., 0., 0., 11.],
[ 0., 0., 0., 15.]]])

关于python - Numpy 中的矩阵乘法(将 2d 转换为 3d),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50709839/

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