gpt4 book ai didi

python - 想要在 numpy elementwise 中定义一个 ndarray

转载 作者:行者123 更新时间:2023-12-01 09:16:00 24 4
gpt4 key购买 nike

我有 2 个 2d numpy 数组,A 的形状为 (i,j) ,B 的形状为 (i, k),其中 j >> k。我想定义一个新的 3d 数组 C,使得 C 中的每个元素都是 A 中每一列与整个矩阵 B 的广播元素明智乘积。换句话说,作为普通的 python 循环,我会这样做

for x in range(j):
C[x] = A[:,x]*B

然而,在这种情况下 j 非常大,如果我能够使用 Numpy 的功能来定义一个 ndarray C 元素(就像上面的循环中那样),那将对我有很大帮助。

感谢您的帮助

最佳答案

您可以像这样使用广播:

a.T[:, :, None] * b

示例:

import numpy as np
np.random.seed(444)

i, j, k = 2, 10, 3
a = np.random.randn(i, j)
b = np.random.randn(i, k)
c = a.T[:, :, None] * b
print(c.shape)
# (10, 2, 3)

转置源于您希望对 a 中的每一列进行内部操作,并且 [:, :, None] 扩展维度以启用广播,如下所示NumPy 的 broadcasting rules 中进行了解释.

关于python - 想要在 numpy elementwise 中定义一个 ndarray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51248082/

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