rey*_*num 6 python arrays numpy filter sub-array
我想要一个 numpy 2D ndarray 的子数组(介于最小值和最大值之间)
xy_dat = get_xydata()
x_displayed = xy_dat[((xy_dat > min) & (xy_dat < max))]
Run Code Online (Sandbox Code Playgroud)
min 和 max 是浮点数,以便与数组 xy_dat 的第一个值进行比较
xy_dat 是一个二维 numpy 数组:
[[ 735964. 1020. ]
[ 735964.04166667 1020. ]
[ 735964.08333333 1020. ]
...,
[ 736613.39722222 1095. ]
[ 736613.40416667 1100. ]
[ 736613.41111111 1105. ]]
Run Code Online (Sandbox Code Playgroud)
x_displayed 被正确过滤,但我丢失了第二个值(它现在是一个一维数组):
[ 735964.04166667 735964.08333333 735964.125
...,
736613.39027778 736613.39722222 736613.40416667]
Run Code Online (Sandbox Code Playgroud)
如何对第一个值进行过滤并保留另一个值?
您应该只在第一列上执行条件:
x_displayed = xy_dat[((xy_dat[:,0] > min) & (xy_dat[:,0] < max))]Run Code Online (Sandbox Code Playgroud)
我们在这里所做的是构建一个视图,其中我们只考虑带有xy_dat[:,0]. 现在检查这个 1d 是否在边界之间,我们构造了一个我们应该保留的行的一维布尔数组,现在我们通过使用它作为xy_dat[..]参数中的项目来选择这些行。