gpt4 book ai didi

python - Numpy:计算所有行 i 的 sum(array[i, a[i]:b[i]])

转载 作者:行者123 更新时间:2023-11-30 22:49:30 27 4
gpt4 key购买 nike

我有一个 numpy 数组 arr 和一个切片起点列表 start 以及一个切片端点列表 end。对于每一行 i,我想确定从 start[i]end[i] 的元素之和。也就是说,我想确定

[np.sum(arr[i, start[i]:end[i]]) for i in range(arr.shape[0])]

有没有更智能/更快的方法来仅使用 numpy 来做到这一点?

最佳答案

这是使用 NumPy broadcasting 的矢量化方法和 np.einsum -

# Create range array corresponding to the length of the no. of cols
r = np.arange(arr.shape[1])

# Mask of ranges corresponding to the start and end indices using broadcasting
mask = (start[:,None] <= r) & (end[:,None] > r)

# Finally, we use the mask to select and sum rows using einsum
out = np.einsum('ij,ij->i',arr,mask)

关于python - Numpy:计算所有行 i 的 sum(array[i, a[i]:b[i]]),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39757355/

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