如何打印以特定数字开头的数组元素?

时间:2018-02-13 21:55:49

标签: python python-2.7 numpy multidimensional-array

我有一个Numpy数组

a= [[[ 6, -1, -1]],

       [[ 8, -1,  3]],

       [[10,  1,  1]],

       [[10, -1, -1]],

       [[10,  1, -1]]]

我希望只保留那些以10开头的行;所以我希望我的输出数组是

a_out= [[[10,  1,  1]],

           [[10, -1, -1]],

           [[10,  1, -1]]]

我正在尝试迭代数组的第一个元素,但是如果我尝试a[0,0:]a[0:,0],我会得到整个行或列。

3 个答案:

答案 0 :(得分:2)

使用布尔掩码:

>>> arr
array([[[ 6, -1, -1]],

       [[ 8, -1,  3]],

       [[10,  1,  1]],

       [[10, -1, -1]],

       [[10,  1, -1]]])
>>> mask = arr[:,:,0] == 10
>>> arr[mask]
array([[[10,  1,  1]],

       [[10, -1, -1]],

       [[10,  1, -1]]])

答案 1 :(得分:1)

确保您的a是一个numpy数组而不是Python列表。然后你可以使用它:

a[a[:,:,0] == 10]

其中内部是bool列表以选择行。

答案 2 :(得分:0)

如果是列表而不是数组,则可以执行以下操作:

filter(lambda x: x[0][0] == 10, a)