2016-08-04 3 views
0

Итак, я пытался понять функцию numpy.delete, и я придумал что-то странное. Вот программа:Ошибка при использовании нескольких numpy.delete в массиве?

>>>import numpy as np 
>>>a = np.arange(10) 
>>> a 
array([0, 1, 2, 3, 4, 6, 7, 9]) 
>>> a[5] 
5 
>>> a=np.delete(a,[a[5]]) 
>>> a 
array([0, 1, 2, 3, 4, 6, 7, 8, 9]) #so far so good 
>>> a[6] 
7 
>>> a=np.delete(a,[a[6]]) 
>>> a 
array([0, 1, 2, 3, 4, 6, 7, 9]) 

Итак ... Когда я ставлю a=np.delete(a,[a[6]]), следует ожидать, чтобы удалить номер 7 из массива, не так ли? Почему это число 8 (термин a[7]) из массива) удалено вместо ожидаемого a[6]?
Я также заметил, что когда я пытаюсь удалить a[0] (= 0) из массива после первого удаления, я просто не могу. Он всегда удаляет один термин вперед. Любая идея, как ее удалить?

ответ

1

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

a=np.delete(a,6) 

В первом случае, это работало только потому, [5] было равным 5, так что индекс и значение были одинаковыми.

Когда у вас есть:

a=np.delete(a,[a[6]]) 

Вы удаляете 7-й элемент так как [6] = 7 там.

+0

спасибо. Я новичок в этой функции и думал, что параметр [i] был параметром. Но теперь это имеет смысл. Благодаря! –

+0

'np.delete' - это не то же самое, что и список' remove'. – hpaulj

Смежные вопросы