In [19]: np.tri(6,6, dtype=bool)
Out[19]:
array([[ True, False, False, False, False, False],
[ True, True, False, False, False, False],
[ True, True, True, False, False, False],
[ True, True, True, True, False, False],
[ True, True, True, True, True, False],
[ True, True, True, True, True, True]])
Комбинирование 2 tri
масок:
In [22]: np.tri(6,6, dtype=bool)&~np.tri(6,6,-3,dtype=bool)
Out[22]:
array([[ True, False, False, False, False, False],
[ True, True, False, False, False, False],
[ True, True, True, False, False, False],
[False, True, True, True, False, False],
[False, False, True, True, True, False],
[False, False, False, True, True, True]])
In [23]: np.where(Out[22])
Out[23]:
(array([0, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5]),
array([0, 0, 1, 0, 1, 2, 1, 2, 3, 2, 3, 4, 3, 4, 5]))
np.tri
по существу:
In [29]: np.greater_equal.outer(np.arange(4),np.arange(4))
Out[29]:
array([[ True, False, False, False],
[ True, True, False, False],
[ True, True, True, False],
[ True, True, True, True]])
In [30]: np.greater_equal(np.arange(4)[:,None],np.arange(4))
Out[30]:
array([[ True, False, False, False],
[ True, True, False, False],
[ True, True, True, False],
[ True, True, True, True]])
np.tril
только применимо where
к этому.
In [37]: np.greater_equal(np.arange(4)[:,None], np.arange(4)) &
np.less_equal(np.arange(-1,3)[:,None], np.arange(4))
Out[37]:
array([[ True, False, False, False],
[ True, True, False, False],
[False, True, True, False],
[False, False, True, True]])