2013-05-19 30 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]]) 

一個特定的列,我刪除了第3列刪除numpy的

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

有沒有更好的辦法? 請認爲這是一個新手問題。

回答

34

如果你想刪除多個列,你只是通過你想刪除的表列的索引,就像這樣:

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

太棒了。謝謝。這就像一個魅力。 – user644745

2

事情是這樣的:

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