从Python中删除2D数组中的行

时间:2015-02-20 10:55:56

标签: python arrays multidimensional-array

我在Python中有一个585L,2L numpy数组。 数据的组织方式与此示例类似。

0,0
1,0
2,1
3,0
4,0
5,1
...

我想创建一个数组,删除秒列上存在0的所有行。因此,假装的最终结果是:

2,1
5,1

我已经阅读了一些相关的例子,但我仍然在努力解决这个问题。

3 个答案:

答案 0 :(得分:1)

既然你提到你的结构是一个numpy数组而不是列表,我会使用numpy逻辑索引来只选择你关心的值。

>>> import numpy as np
>>> x = [[0,0], [1,0], [2,1], [3,0], [4,0], [5,1]] # Create dummy list
>>> x = np.asarray(x) # Convert list to numpy array
>>> x[x[:, 1] != 0] # Select out items whose second column don't contain zeroes

 array([[2, 1],
   [5, 1]])

答案 1 :(得分:0)

这是我的答案 如果您的列表如[[0,0],[2,1],[4,3],[2,0]] 如果您的列表结构不是这样,请告诉我

我的回答打印出第二列num不等于0的列表

    print [x for x in your_list if x[1] != 0] #your_list is the variable of the list 

答案 2 :(得分:0)

您可以使用列表理解。这些在Python数据结构页面(Python 2Python 3)上进行了描述。

如果您的数组是:

x = [[0,0],
    [1,0],
    [2,1],
    [3,0],
    [4,0],
    [5,1]]

然后是以下命令

[y for y in x if y[1] != 0]

会返回所需的结果:

[[2, 1], [5, 1]]

编辑:我忽略了它是一个numpy数组。考虑到这一点,JoErNanO的答案更好。