2013-05-19 10 views
19
>>> arr = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]]) 
>>> arr 
array([[ 1, 2, 3, 4], 
     [ 5, 6, 7, 8], 
     [ 9, 10, 11, 12]]) 

Ich bin die dritte Spalte alsentfernen, um eine bestimmte Spalte in numpy

Löschen
>>> np.hstack(((np.delete(arr, np.s_[2:], 1)),(np.delete(arr, np.s_[:3],1)))) 
array([[ 1, 2, 4], 
     [ 5, 6, 8], 
     [ 9, 10, 12]]) 

Gibt es einen besseren Weg? Bitte betrachten Sie dies als eine neue Frage.

Antwort

34

Wenn Sie jemals mehr als eine Spalten löschen möchten, müssen Sie nur passieren Indizes der Spalten Sie als Liste gelöscht werden sollen, wie folgt aus:

>>> a = np.arange(12).reshape(3,4) 
>>> a 
array([[ 0, 1, 2, 3], 
     [ 4, 5, 6, 7], 
     [ 8, 9, 10, 11]]) 
>>> np.delete(a, [1,3], axis=1) 
array([[ 0, 2], 
     [ 4, 6], 
     [ 8, 10]]) 
8
>>> import numpy as np 
>>> arr = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]]) 
>>> np.delete(arr, 2, axis=1) 
array([[ 1, 2, 4], 
     [ 5, 6, 8], 
     [ 9, 10, 12]]) 
+1

großartig. Vielen Dank. Das funktioniert wie ein Zauber. – user644745

2

Etwas wie folgt aus:

In [7]: x = range(16) 

In [8]: x = np.reshape(x, (4, 4)) 

In [9]: x 
Out[9]: 
array([[ 0, 1, 2, 3], 
     [ 4, 5, 6, 7], 
     [ 8, 9, 10, 11], 
     [12, 13, 14, 15]]) 

In [10]: np.delete(x, 1, 1) 
Out[10]: 
array([[ 0, 2, 3], 
     [ 4, 6, 7], 
     [ 8, 10, 11], 
     [12, 14, 15]]) 
Verwandte Themen