过滤二维 numpy 数组 [英] Filter a 2D numpy array
问题描述
我想要一个 numpy 2D ndarray 的子数组(介于最小值和最大值之间)
I want to have a sub array (between min and max) of a numpy 2D ndarray
xy_dat = get_xydata()
x_displayed = xy_dat[((xy_dat > min) & (xy_dat < max))]
min 和 max 是浮点数,以便与数组 xy_dat 的第一个值进行比较
min and max are float in order to be compare with the first value of the array xy_dat
xy_dat 是一个二维 numpy 数组:
xy_dat is a 2D numpy array :
[[ 735964. 1020. ]
[ 735964.04166667 1020. ]
[ 735964.08333333 1020. ]
...,
[ 736613.39722222 1095. ]
[ 736613.40416667 1100. ]
[ 736613.41111111 1105. ]]
x_displayed 被正确过滤,但我丢失了第二个值(它现在是一个一维数组):
x_displayed is correctly filtered but I have lost the second value (it is now a 1D array) :
[ 735964.04166667 735964.08333333 735964.125
...,
736613.39027778 736613.39722222 736613.40416667]
如何过滤第一个值并保留另一个值?
How make the filter on the first value and keep the other ?
推荐答案
你应该只在 first 列上执行条件:
You should perform the condition only over the first column:
x_displayed = xy_dat[((xy_dat[:,0] > min) & (xy_dat[:,0] < max))]
我们在这里所做的是构建一个视图,其中我们只考虑带有 xy_dat[:,0]
的第一列.现在检查这个 1d 是否在边界之间,我们构造了一个我们应该保留的行的 1D 布尔数组,现在我们通过将它用作 xy_dat 中的项目来选择这些行[..]
参数.
What we do here is constructing a view where we only take into account the first column with xy_dat[:,0]
. By now checking if this 1d is between bounds, we construct a 1D boolean array of the rows we should retain, and now we make a selection of these rows by using it as item in the xy_dat[..]
parameter.
这篇关于过滤二维 numpy 数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!