Отрицать кусочек в Numpy? - PullRequest
0 голосов
/ 03 июля 2018

Допустим, у меня есть массив что-то вроде:

foo = np.random.rand(2, 5)

и мне дали кусочек как [:, [2, 4]]. То, что я хотел бы сделать, это эффективно иметь возможность удалять срез из массива, поэтому в основном оставляю мне:

foo[:, [0, 1, 3]]

Здесь foo может быть произвольным тензором ранга, причем срез в каждом измерении представляет собой либо :, либо список неповторяющихся положительных индексов. Есть ли эффективный способ реализовать это без использования np.delete и сложного (медленного) цикла?

1 Ответ

0 голосов
/ 03 июля 2018

Имея входной список индексов столбцов, которые вы хотите удалить, вы можете удалить эти элементы из списка всех индексов.

Все еще проще, вы можете использовать set.difference для удаления необходимых столбцов:

foo[:, sorted(set(range(foo.shape[1])) - set([2, 4]))]

Чтобы выбрать определенные строки или столбцы, вам не нужно использовать numpy.delete. Как вы обнаружили, это неэффективно с NumPy.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...