我有一个列表列表,每个列表表示一个数字区间:
intervals = [[1, 4],
[7, 9],
[13, 18]
]
我需要创建一个包含 20 个元素的列表,如果每个元素的索引不包含在任何间隔中,则每个元素为 0,否则为 1。因此,所需的输出是:
output = [0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0]
我可以想到使用一些简单的东西,如下所示:
output = zeros(20)
for index, _ in enumerate(output):
for interval in intervals:
if interval[0] <= index <= interval[1]:
output[index] = 1
但是有没有更有效的方法?
最佳答案
与@mozway 的答案基本相同,但没有创建中间数据结构并且可以说更具可读性:
output = np.zeros(N, dtype=int)
for start, end in intervals:
output[np.arange(start, end+1)] = 1
关于python - 根据索引是否包含在间隔列表中创建零/一列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71411194/