gpt4 book ai didi

python - 特殊向量和逐元素乘法

转载 作者:行者123 更新时间:2023-11-28 16:39:21 25 4
gpt4 key购买 nike

我有 2 个数组。 “A”是其中之一,具有任意长度(假设一开始有 1000 个条目),其中每个点都包含一个 n 维向量,其中每个条目代表一个标量。 “B”是另一个,具有 n 个条目,每个条目都包含一个 3 维向量。我如何进行标量乘法,以便结果是一个数组“C”,其中每个条目是每个 n 标量与每个 n 的标量乘法> 3 维向量?

以 4-D 为例:

    a=[[1,2,3,4],[5,6,7,8],....]
b=[[1,0,0],[0,1,0],[0,0,1],[1,1,1]]

结果

    c=[[1*[1,0,0],2*[0,1,0],3*[0,0,1],4*[1,1,1]] , [5*[1,0,0],...],...]

实现应该在 numpy 中,没有太大的 for 循环,因为预计会有超过 1000 个条目。 n 在我们的案例中预计为 7。

最佳答案

如果您开始于:

a = np.array([[1,2,3,4],[5,6,7,8]])
b = np.array([[1,0,0],[0,1,0],[0,0,1],[1,1,1]])

然后我们可以向a 添加一个额外的轴,并沿着它重复数组给我们...

>>> a[:,:,None].repeat(3, axis=2)
array([[[1, 1, 1],
[2, 2, 2],
[3, 3, 3],
[4, 4, 4]],

[[5, 5, 5],
[6, 6, 6],
[7, 7, 7],
[8, 8, 8]]])

现在,正如@Jaime 所说,操作时无需使用repeat,因为NumPy 的广播会处理它:

>>> a[:,:,None] * b
array([[[1, 0, 0],
[0, 2, 0],
[0, 0, 3],
[4, 4, 4]],

[[5, 0, 0],
[0, 6, 0],
[0, 0, 7],
[8, 8, 8]]])

关于python - 特殊向量和逐元素乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21605143/

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