代码之家  ›  专栏  ›  技术社区  ›  tinlyx

如何根据numpy数组的元素字段过滤该数组[duplicate]

  •  0
  • tinlyx  · 技术社区  · 8 年前

    我想要一个numpy 2D ndarray的子数组(介于min和max之间)

        xy_dat = get_xydata()
        x_displayed = xy_dat[((xy_dat > min) & (xy_dat < max))]
    

    最小值和最大值是浮动的,以便与数组xy_dat的第一个值进行比较

    xy_dat是一个2D numpy阵列:

    [[ 735964.            1020.        ]
     [ 735964.04166667    1020.        ]
     [ 735964.08333333    1020.        ]
     ..., 
     [ 736613.39722222    1095.        ]
     [ 736613.40416667    1100.        ]
     [ 736613.41111111    1105.        ]]
    

    显示的x_已正确过滤,但我丢失了第二个值(现在是1D数组):

    [ 735964.04166667  735964.08333333  735964.125      
     ...,  
    736613.39027778  736613.39722222  736613.40416667]
    

    如何在第一个值上设置过滤器,并保留另一个值?

    0 回复  |  直到 8 年前
        1
  •  10
  •   willeM_ Van Onsem    8 年前

    你应该只在一段时间内执行该条件 第一 专栏:

    x_displayed = xy_dat[((xy_dat[:,0] > min) & (xy_dat[:,0] < max))]

    我们在这里要做的是构造一个只考虑第一列 xy_dat[:,0] .现在检查这个1d是否在边界之间,我们构造一个 1D 我们应该保留的行的布尔数组,现在我们通过在 xy_dat[..] 参数