排除numpy数组中的区域

时间:2018-09-15 22:30:30

标签: python arrays numpy

我有一个形状为dat的numpy数组((n,3)),其中n表示行数,三列表示x(列0), y(第1列)和z(第2列)坐标。

我想排除此numpy数组中的行,其中x的值位于某个限制(xlow < x < xupp AND y的值位于ylow < x < yupp之间,其中z的值位于zlow < x < zupp之间,我已经拥有[xlow, xupp, ylow, yupp, zlow, zupp]的值。

我知道如何使用以下方法找到排除条件成立的区域(行):

mark = np.where( ( dat[:,0]>xlow & \
                   dat[:,0]<xupp )  & \
                 ( dat[:,1]>ylow & \
                   dat[:,1]<yupp ) & \
                 ( dat[:,2]>zlow & \
                   dat[:,2]<zupp ) )

但是,我希望这些行被排除在新数组之外。如何在numpy中执行此操作?谢谢。

1 个答案:

答案 0 :(得分:0)

尝试对np.where()内部的条件求反。像这样:

mark = np.where( ~( (dat[:,0]>xlow) & \
                    (dat[:,0]<xupp) & \
                    (dat[:,1]>ylow) & \
                    (dat[:,1]<yupp) & \
                    (dat[:,2]>zlow) & \
                    (dat[:,2]<zupp) ) )