【问题标题】:Python and numpy - removing rows from a corresponding matrixPython和numpy - 从相应的矩阵中删除行
【发布时间】:2015-10-10 10:03:20
【问题描述】:

我正在使用 numpy。

我有一个数组Y 和一个矩阵X。这是为了回归。他们的数组有标签,例如0,1,2,3,4,5。我需要创建一个新数组,其中删除了所有行的标签0,并删除了X 中的相应行。最有效的方法是什么?

例如

for i in xrange(y.shape):
    if y==0:
       pop y pop X

【问题讨论】:

    标签: python numpy


    【解决方案1】:

    Numpy 数组不擅长追加/删除行。如果您知道要删除哪些行,只需提取其他行(您需要)并创建一个新数组。

    我不太明白你的问题,所以如果我错了,请纠正我:

    x = x[y != 0]
    y = y[y != 0]
    

    例子:

    import numpy as np
    x = np.array([[11, 12, 13], [21, 22, 23], [31, 32, 33]])
    y = np.array([1, 0, 3])
    x = x[y != 0]
    y = y[y != 0]
    

    现在:

    x == array([[11, 12, 13],
                [31, 32, 33]])
    y == array([1, 3])
    

    【讨论】:

    • 我只想删除数组y == 0中的所有标签并删除X中的对应行
    • 坦帕——那么这正是你所需要的——从y 中删除所有元素== 0,并从x 中删除相应的元素。
    【解决方案2】:

    如果你知道无论如何你都会有那个空行,我不明白为什么你甚至需要 NUMPY 来做这个......

    Z = Z[:][1:]
    

    如果它只是第一行,这实际上适用于矩阵,当然还有数组

    Z = Z[1:]
    

    如果您不关心矩阵中项目的位置,我喜欢@eumiro 的解决方案,但我相信他们的解决方案将删除所有零和移位元素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-10
      • 1970-01-01
      • 2019-07-08
      • 1970-01-01
      • 2021-11-14
      • 1970-01-01
      • 2021-05-17
      • 2016-05-26
      相关资源
      最近更新 更多