使用布尔值对数组进行切片

问题描述 投票:0回答:1

给出:

a = numpy.zeros(100, dtype=bool)
a[10:20] = True 
a[40:60] = True

我希望将长度也是 100 的数组 b 分割成两个数组:

b[10:20], b[40:60]

换句话说,我希望在

a
中建立包含True值的索引范围,这样我就可以对
b
进行切片。

python numpy
1个回答
0
投票

您可以使用布尔数组

a
来查找值为
True

的索引
import numpy as np

a = np.zeros(100, dtype=bool)
a[10:20] = True
a[40:60] = True

b = np.arange(100)

indices = np.where(a)[0]
slices = [b[start:end] for start, end in zip(indices[:-1:10], indices[1::10])]

for s in slices:
    print(s)
© www.soinside.com 2019 - 2024. All rights reserved.