gpt4 book ai didi

python - numpy中的不规则切片

转载 作者:太空宇宙 更新时间:2023-11-04 09:53:54 26 4
gpt4 key购买 nike

考虑下面的 numpy 数组

a = np.arange(20)

下面给出切片要求

b = [[0,4],
[4,9],
[9,15],
[15,19]]

如何根据'b'中的不规则切片信息对'a'进行切片?例如:

np.mean(a[b[:,0]:b[:,1]])

我知道如何用循环语句实现这个,比如

[np.mean(a[b[_][0]:b[_][1]]) for _ in range(len(b))]

但是有什么方法可以避免使用循环吗?

最佳答案

您可以使用 np.add.reduceat 并将扁平化的 b 作为索引:

np.add.reduceat(a, np.ravel(b))[::2]/np.diff(b, axis=1).ravel()
# array([ 1.5, 6. , 11.5, 16.5])

使用 for 循环:

[np.mean(a[b[_][0]:b[_][1]]) for _ in range(len(b))]
# [1.5, 6.0, 11.5, 16.5]

更多的可以看help(np.add.reduceat)中的第一个例子:

Examples
--------
To take the running sum of four successive values:

>>> np.add.reduceat(np.arange(8),[0,4, 1,5, 2,6, 3,7])[::2]
array([ 6, 10, 14, 18])

关于python - numpy中的不规则切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46696415/

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