您可以使用
broadcasting-
r = np.arange(10)[:,None]out = ((start <= r) & (r <= end)).astype(int)
这将创建一个形状数组
(10,len(start)。因此,如果您需要实际填充一些已经初始化的array
filled_arr,请执行-
m,n = out.shapefilled_arr[:m,:n] = out
样品运行-
In [325]: start = [0,1,2,3,4,4,3,2,1,0] ...: end = [9,8,7,6,5,5,6,7,8,9] ...:In [326]: r = np.arange(10)[:,None]In [327]: ((start <= r) & (r <= end)).astype(int)Out[327]: array([[1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 1, 0, 0, 0, 0, 0, 0, 1, 1], [1, 1, 1, 0, 0, 0, 0, 1, 1, 1], [1, 1, 1, 1, 0, 0, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 1, 1, 1, 1], [1, 1, 1, 0, 0, 0, 0, 1, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 1, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1]])
如果你想用这个作为一个面具
1s作为
True的,跳过转换
int。因此,
(start <= r) & (r <= end)将是面具。



