нарезка массива numpy на основе определенных логических индексов

#python #numpy

#python #numpy

Вопрос:

У меня есть массив numpy ( X )

 1   2   3   4
3   4   5   6
5   6   7   8
  

и массив индексов Booelan ( ind )

 0 1 1 0
  

Я хотел бы нарезать массив numpy на основе индекса.
т.е.
Результирующий массив после силицирования должен иметь только столбцы 2 и 3 (с соответствующим индексом 1):

 2   3   
4   5   
6   7   
  

Я пытался X[:,ind] , но это не сработало.

Комментарии:

1. Преобразование ind в логический массив перед индексацией.

Ответ №1:

Вам нужно преобразовать ind в boolean array . Простой способ сделать это — использовать numpy.array() :

 numpy.array(ind, dtype=bool)
  

Затем вы можете использовать X[:,ind]

Ответ №2:

Вам необходимо преобразовать ind в dtype: bool .

Это можно сделать, замаскировав с ind == 1 помощью .

То есть,

 >>> X[:,ind == 1]
array([[2, 3],
       [4, 5],
       [6, 7]])