Удаление последних значений в массиве (используя Numpy) - PullRequest
0 голосов
/ 06 апреля 2019

У меня есть Array[0] с len(Array[0]) = 40 Я хочу удалить последние 3 значения в этом массиве.

np.delete(Array[0],[36,39])

Работает как надо.Тем не менее,

np.delete(Array[0],[len(Array[0])-4,len(Array[0])-1])

Удаляет только последнее число (вместо последних 3).

np.delete(Array[0],[-3,-1])

Ничего не делает и выдает предупреждение: main : 1: FutureWarning: в будущем отрицательные индексы не будут игнорироваться numpy.delete.

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

1 Ответ

0 голосов
/ 06 апреля 2019

Вы можете использовать range(37, 40) вместе с ключевым словом axis для удаления трех последних столбцов. Вот надуманный пример:

In [88]: arr = np.random.random_sample((3, 10))
In [89]: arr.shape
Out[89]: (3, 10)

In [90]: new_arr = np.delete(arr, range(7, 10), axis=1)

In [91]: new_arr.shape
Out[91]: (3, 7)

Обратите внимание, что numpy.delete() вернет новый подмассив. Если вы настороженно относитесь к требованиям к памяти, вы должны нарезать, как предложил Дивакар .

sliced_arr = Array[0][:-3]

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

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