我试图从断点对数组创建一个布尔掩码数组。因此,结果应该是长度为n的布尔掩码,在两个断点之间具有真值。我可以通过编写一个for循环来迭代地解决这个问题,但我想找到它的矢量化numpy等效。
mask = np.array([[False, False, False, False, False],
[False, False, False, False, False]])
breakpoints = np.array([[1, 3],
[2, 4]])
for i, bp in enumerate(breakpoints):
mask[i, bp[0]:bp[1]] = True
输出:
array([[False, True, True, False, False],
[False, False, True, True, False]])
理想情况下,我想用numpy中的索引和数组操作来解决这个问题,但我无法找到正确的方法。
我希望这个例子是清楚的,谢谢你的任何帮助!您可以使用以下技巧:
>>> breakpoints = np.array([[1, 3],
... [2, 4]])
>>> output_width = 5
>>> idx = np.arange(output_width)
>>> (breakpoints[:,[0]] <= idx) & (idx < breakpoints[:,[1]])
array([[False, True, True, False, False],
[False, False, True, True, False]])