Документация
xtensor предоставляет карту для функциональных возможностей numpy ( link ).
Список охватывает много вариантов использования, но есть одна функция, которую я не смог воссоздать. У меня есть 2D-тензор, и я хочу выбрать определенные c строки, которые идентифицируются последовательностью, которая создается во время выполнения. Насколько я понимаю, это предотвращает использование xt :: drop и xt :: keep, поскольку это шаблонные функции variadi c (я только начал изучать c ++, так что поправьте меня, если я что-то упустил). Кроме того, эта последовательность нерегулярна и не может быть воспроизведена с помощью xt :: range.
Вот что-то вроде того, что я хочу в numpy:
import numpy as np
row = 10
col = 3
array = np.arange(row*col).reshape([row, col])
chosen_rows = [0, 2, 3, 9] # imagine this is not known at compile time
subset_array = array[chosen_rows, :]
Я нашел соответствующий пост : Фильтрация многомерных представлений в xtensor
Здесь критерий, используемый для выбора строк, основан на элементах самой матрицы, тогда как в моем случае этот критерий является внешним. Я мог бы добавить строку в матрицу, представляющую индекс строки, но я надеюсь избежать этого. Кстати, вышеприведенные даты постов и xtensor изменились с тех пор, так что если у вас есть улучшенный ответ на этот пост, я буду рад прочитать.