Вы можете использовать соответствующий ранг глагола, чтобы получить что-то вроде 2d-выбора:
(2 | k) #"1 1 k
1 3
5 7
, но запрошенные оси должны быть заполнены 0
s (или !.
), чтобы сохранитьправильная форма:
(k > 3) #("1 1) k
0 0 0 0
4 5 6 7
(k > 2) #("1 1) k
3 0 0 0
4 5 6 7
Вы должны лучше определить select
для измерений> 1, потому что теперь у вас есть структура.Как вы отбрасываете ценности?Вы держите пустые "клетки"?Вы заменяете на 0
s?Важна ли структура для результата?
Если, например, вам нужны только "значения где", то просто ravel ,
массив:
(,k > 2) # ,k
3 4 5 6 7
Если вам нужно "заменитьгде ", то вы можете использовать поправку }
:
u =: 5 :'I. , 5 > y' NB. indices where 5 > y
0 u } k
0 0 0 0
0 5 6 7
z =: 3 2 4 $ i.25
u =: 4 :'I. , (5 > y) +. (0 = 3|y)' NB. indices where 5>y or 3 divides y
_999 u } z
_999 _999 _999 _999
_999 5 _999 7
8 _999 10 11
_999 13 14 _999
16 17 _999 19
20 _999 22 23