我正在尝试按如下方式过滤数组:
[[[ 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一起努力解决该怎么做。我有很多这样做,所以关于排序/过滤的任何额外提示都会非常有用。
谢谢!
答案 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)