删除numpy中的特定列

use*_*745 23 python numpy

>>> 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]])
Run Code Online (Sandbox Code Playgroud)

我删除第3列为

>>> 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]])
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法?请认为这是一个新手问题.

Aka*_*all 45

如果您想要删除多个列,只需将要删除的列的索引作为列表传递,如下所示:

>>> 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]])
Run Code Online (Sandbox Code Playgroud)

  • 请注意,`np.delete`不能正常运行; 如果你想修改`a`,而是写:`a = np.delete(a,[1,3],axis = 1)` (3认同)

jam*_*lak 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]])
Run Code Online (Sandbox Code Playgroud)