2015-05-17 3 views
4

В двух словах я хотел бы знать, есть ли в факеле тензорная команда, которая дает мне индексы элементов в тензоре, которые удовлетворяют определенным критериям.Эквивалентная функция тензора факела для «поиска» в Matlab?

Вот MATLAB код, который показывает, что я хотел бы быть в состоянии сделать в горелке:

my_mat = magic(3); % returns a 3 by 3 matrix with the numbers 1 through 9 
greater_than_fives = find(my_mat > 5); % find indices of all values greater than 5, the " > 5" is a logical elementwise operator that returns a matrix of all 0's and 1's and finally the "find" command picks out the indices with a "1" in them 
my_mat(greater_than_fives) = 0; % set all values greater than 5 equal to 0 

Я понимаю, что я мог бы сделать это в горелке, используя для цикла, но есть некоторые эквиваленты от Matlab найти команду, которая позволила бы мне сделать это более компактно?

ответ

12

х [х: GT (5)] = 0

В общем случае существует х: GT: LT: Ge: ль: э

Существуют также общие: применять функции тх принимает анонимную функцию и применяет ее к каждому элементу.

+2

Благодарим за отзыв! Тем не менее, меня интересовали как использование индексов для индексации в моем массиве (это то, что вы предоставили), но и как найти сами индексы (которые часто полезны для других вещей, кроме индексации в исходный тензор. – elpiloto

+1

сами индексы могут быть сделаны с помощью очень уродливого взлома: indices = torch.linspace (1, x: nElement(), x: nElement()) [x: gt (5)] – smhx

+1

Булевое индексирование, похоже, не работает разрезая только один тензорный размер.Таким образом, получится эквивалент find()/np.where(). –

Смежные вопросы