Numpy:选择,在哪里,分区还是其他什么?

时间:2014-08-22 13:47:18

标签: python numpy

我正在尝试按如下方式过滤数组:

[[[   512    520      1 130523]]

 [[  1554   1793   1661  56337]]

 [[  1327   1553   1433  52386]]

 [[  1799   2049   1931  51753]]

 [[   958   1313   1107  49546]]

 [[   625    770    706   8822]]

 [[     2    492    297  36816]]

 [[   520    614    573   7448]]

 [[  1313   1327   1321   1086]]]

我希望将第四列与某些条件相匹配(比如说> 50000)并删除该行(如果不匹配),如果匹配则保留该行。

我正在努力与numpy docs一起努力解决该怎么做。我有很多这样做,所以关于排序/过滤的任何额外提示都会非常有用。

谢谢!

1 个答案:

答案 0 :(得分:1)

如果它确实是它必须的形状,并且在光学上似乎是(9,1,4),那么你可以用以下方式创建一个简单的掩码索引数组:

我们假设您的阵列名称是" x"

然后:

indices = x[:,:,3] > 50000
x = x[numpy.where(indices)[0]]

indices是一个与x相同形状的布尔数组,包含。

这也有效,但似乎没有保持形状:

x = x[indices]

编辑:您也可以改为选择有效行,而不是删除无效行:

x = numpy.delete(x, numpy.where(~indices)[0], axis=0)