在对numpy数组前二维条件的基础上,提取numpy数组的前二维



假设我有一个3维的numpy数组[x,y,z],我想提取z维上的一个条件下的x和y维,例如,如果z==1。我该怎么做?

您可以为此使用numpy索引。考虑一个数组:

a = np.arange(21).reshape((-1, 3))
# array([[ 0,  1,  2],
#       [ 3,  4,  5],
#       [ 6,  7,  8],
#       [ 9, 10, 11],
#       [12, 13, 14],
#       [15, 16, 17],
#       [18, 19, 20]])

现在您需要最后一列的条件。。。说永远的数字:

# all rows ⬎  ⬐ third column  
filtered = a[a[:, 2] % 2 == 0]
# array([[ 0,  1,  2],
#       [ 6,  7,  8],
#       [12, 13, 14],
#       [18, 19, 20]])

只需选择前两列:

filtered[:,:2]   
# array([[ 0,  1],
#        [ 6,  7],
#        [12, 13],
#        [18, 19]])

这之所以有效,是因为它提供了一个布尔值数组。。。

i = a[:, 2] % 2 == 0
# array([ True, False,  True, False,  True, False,  True])

然后可以用来索引原件:

a[i]
# array([[ 0,  1,  2],
#        [ 6,  7,  8],
#        [12, 13, 14],
#        [18, 19, 20]])

相关内容

  • 没有找到相关文章

最新更新