2016-08-04 6 views
0

Also, ich habe versucht, die numpy.delete Funktion zu verstehen, und ich kam mit etwas komisch. Hier ist das Programm:Fehler mit mehreren numpy.delete verwendet für Array?

>>>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]) 

So ... Wenn ich a=np.delete(a,[a[6]]) setzen, sollte man erwarten, die Zahl 7 aus dem Array zu entfernen, nicht wahr? Warum wurde die Nummer 8 (der Begriff a[7]) aus dem Array entfernt anstatt der erwarteten a[6]?
Ich bemerkte auch, dass, wenn ich versuche, die a[0] (= 0) aus dem Array nach dem ersten Löschen zu entfernen, kann ich einfach nicht. Es entfernt immer einen Begriff voraus. Irgendeine Idee, wie entferne ich es?

Antwort

1

Das zweite Argument sollte der Index des Elements sein, das Sie löschen möchten, nicht das Element selbst.

a=np.delete(a,6) 

Im ersten Fall, es funktionierte nur, weil ein [5] gleich 5 passiert, so dass der Index und der Wert war die gleiche.

Wenn Sie:

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

Sie sind seit dem 7. Element Löschen [6] = 7 gibt.

+0

Vielen Dank. Ich bin neu in dieser Funktion und dachte, dass der a [i] der Parameter war. Aber es macht jetzt Sinn. Vielen Dank! –

+0

'np.delete' ist nicht dasselbe wie die Liste' remove'. – hpaulj

Verwandte Themen