python - 如何删除 numpy 数组中的列?

标签 python arrays numpy

假设我们有一个 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/

相关文章:

python - Pandas:计算满足条件时的列之间的时间

python - 为什么 next() 总是显示相同的值?

javascript - 在 Controller 中获取每个指定类型的名称

python - 如何使用 numpy 数组正确调用 `__rsub__` ?

python - Beautifulsoup 在没有 findAll 的情况下按属性导航 div

python - 数据帧的频率

javascript - 如何将多维数组解析为 PHP

arrays - 二维数组邻接算法

python - 使用 python 添加新列,具体增加四分之一

python - 将一个 numpy 数组的值添加到特定索引处的 2D numpy 数组的最快方法