假设我们有一个 5x4 矩阵。 我们只需要删除第一个维度。 我们如何用 numpy 做到这一点?
array([[ 0., 1., 2., 3.],
[ 4., 5., 6., 7.],
[ 8., 9., 10., 11.],
[ 12., 13., 14., 15.],
[ 16., 17., 18., 19.]], dtype=float32)
我试过:
arr = np.arange(20, dtype=np.float32)
matrix = arr.reshape(5, 4)
new_arr = numpy.delete(matrix, matrix[:,0])
trimmed_matrix = new_arr.reshape(5, 3)
看起来有点笨重。 我做得对吗? 如果是,是否有一种更清洁的方法可以在不 reshape 的情况下移除尺寸?
最佳答案
如果你想从二维 Numpy 数组中删除一列,你可以像这样指定列
保留所有行并删除第 0 列(或从第 1 列开始到最后)
a[:,1:]
还有一种方法可以指定要保留的列(如果需要,还可以更改顺序) 这将保留所有行并仅使用第 0、2、3 列
a[:,[0,2,3]]
关于这方面的文档可以找到here
如果你想要专门删除列的东西,你可以这样做:
idxs = list.range(4)
idxs.pop(2) #this removes elements from the list
a[:, idxs]
@hpaulj 提出了 numpy.delete()
这将是如何返回沿轴 = 1 删除了 2 列(0 和 2)的“a” View 。
np.delete(a,[0,2],1)
这实际上并没有从 'a' 中删除项目,它的返回值是一个新的 numpy 数组。
关于python - 如何删除 numpy 数组中的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34007632/