gpt4 book ai didi

python - numpy 中的 block 标量向量乘法

转载 作者:太空狗 更新时间:2023-10-30 02:52:45 25 4
gpt4 key购买 nike

我有一个大的一维数组 x,它是通过串联不同长度的较小数组 x_0 ,..., x_m-1 得到的。我还知道每个 x_i 长度的列表 L。给定一个长度为 m 的数组 a,目标是计算一个平面数组 [a[0]*x0, a[1]*x1,.. .].

例如,如果我有 x = np.array([1,2,3,4,5])a=np.array([2,-1] ), L = [2,3], 那么结果应该是np.array([2,4,-3,-4,-5])

在 numpy 中是否有比这种天真的实现更简单(更快、更像 pythonic 等)的方法?

L.insert(0,0)
cs = np.cumsum(L)
y = np.empty(x.shape)
for i in range(m):
y[cs[i]:cs[i+1]] = a[i] * x[cs[i]:cs[i+1]]

我也可以在 Numba 中执行此操作。

m以百为单位,每个x_i的长度在1e6左右。

最佳答案

使用np.repeat 重复a 的元素并执行逐元素乘法-

y = x*np.repeat(a,L)

关于python - numpy 中的 block 标量向量乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52200102/

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