Python和numpy - 从相应的矩阵中删除行

时间:2012-08-15 10:29:16

标签: python numpy

我正在使用numpy。

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

e.g。

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

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

Z = Z[:][1:]

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

Z = Z[1:]

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