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

tôi đang xóa cột thứ 3 nhưloại bỏ một cột cụ thể trong 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]]) 

Có cách nào tốt hơn? Hãy xem đây là một câu hỏi mới.

Trả lời

34

Nếu bạn đã bao giờ muốn xóa nhiều hơn một cột, bạn chỉ cần vượt qua chỉ số của cột mà bạn muốn xóa như một danh sách, như thế này:

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

tuyệt vời. cảm ơn. công việc này như một cái duyên vậy. – user644745

2

Something như thế này:

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]]) 
Các vấn đề liên quan