Один путь чисто с masking
-
In [40]: m = a==1
In [41]: (m | m.T).view('i1')
Out[41]:
array([[0, 0, 1, 1, 1],
[0, 0, 0, 1, 1],
[1, 0, 0, 1, 1],
[1, 1, 1, 0, 1],
[1, 1, 1, 1, 0]], dtype=int8)
Другой с дополнением -
In [55]: ((a.T + a)>0).view('i1')
Out[55]:
array([[0, 0, 1, 1, 1],
[0, 0, 0, 1, 1],
[1, 0, 0, 1, 1],
[1, 1, 1, 0, 1],
[1, 1, 1, 1, 0]], dtype=int8)
Другой с просто bitwise-OR-ing
-
In [57]: (a.T | a)
Out[57]:
array([[0, 0, 1, 1, 1],
[0, 0, 0, 1, 1],
[1, 0, 0, 1, 1],
[1, 1, 1, 0, 1],
[1, 1, 1, 1, 0]])