我想要一个numpy 2D ndarray的子数组(在min和max之间)
xy_dat = get_xydata()
x_displayed = xy_dat[((xy_dat > min) & (xy_dat < max))]
min和max是float,以便与数组xy_dat
的第一个值进行比较xy_dat是一个2D numpy数组:
[[ 735964. 1020. ]
[ 735964.04166667 1020. ]
[ 735964.08333333 1020. ]
...,
[ 736613.39722222 1095. ]
[ 736613.40416667 1100. ]
[ 736613.41111111 1105. ]]
x_displayed已正确过滤,但我丢失了第二个值(现在是1D数组):
[ 735964.04166667 735964.08333333 735964.125
...,
736613.39027778 736613.39722222 736613.40416667]
如何在第一个值上设置过滤器并保留另一个值?
答案 0 :(得分:4)
您应该只在第一个列上执行条件:
x_displayed = xy_dat[((xy_dat[:,0] > min) & (xy_dat[:,0] < max))]
我们在这里做的是构建一个视图,我们只考虑xy_dat[:,0]
的第一列。现在检查这个1d是否在边界之间,我们构造了一个我们应该保留的行的