Массив Numpy: НЕ выбирайте определенные строки или столбцы - PullRequest
0 голосов
/ 19 июня 2019

У меня есть простой массив NumPy. Я хочу выбрать все строки, кроме 1-го и 6-го Я попробовал:

temp = np.array([1,2,3,4,5,6,7,8,9])
t = temp[~[0,5]]

Я получаю следующую ошибку:

 TypeError: bad operand type for unary ~: 'list'

Как правильно это сделать?

Ответы [ 3 ]

0 голосов
/ 19 июня 2019

Вы можете использовать объект np.r_ numpy, который объединяет массив, разбивая их, используя индексы, дающие результирующий вывод.

np.r_[temp[1:5], temp[6:]]

Приведенный выше код объединяет два массива, которые вырезаны из исходного массива и, следовательно, результирующего массива без указанных индексов.

0 голосов
/ 19 июня 2019

Вы можете использовать numpy.delete для удаления элементов в определенной позиции индекса:

t = np.delete(temp, [0, 5])

Или вы можете создать логический массив, который можно отрицать индексы:

bool_idx = np.zeros(len(temp), dtype=bool)
bool_idx[[0, 5]] = True
t = temp[~bool_idx]
0 голосов
/ 19 июня 2019

Вы не можете создать индексы таким образом.Вместо этого вы можете создать диапазон чисел от 0 до temp.size и удалить нежелательные индексы:

In [19]: ind = np.delete(np.arange(temp.size), [0, 5])

In [21]: temp[ind]
Out[21]: array([2, 3, 4, 5, 7, 8, 9])

или просто создать его следующим образом:

In [16]: ind = np.concatenate((np.arange(1, 5), np.arange(6, temp.size)))

In [17]: temp[ind]
Out[17]: array([2, 3, 4, 5, 7, 8, 9])
...