【发布时间】:2016-12-30 21:33:16
【问题描述】:
我有一个四列多行的 numpy 数组:
>>> dat
array([['4/5/2004', '17', 0.0, 0.0],
['4/5/2004', '7', 0.0, 0.0],
['4/5/2004', '19:48:20', 58.432488, -135.9202205],
['4/5/2004', '19:48:32', 58.432524300000004, 0.0],
['4/5/2004', '19:48:36', 58.4325365, -150.9202813]], dtype=object)
我想删除第 3 列或第 4 列中的值等于 0 的所有行,因此结果将是:
([['4/5/2004', '19:48:20', 58.432488, -135.9202205],
['4/5/2004', '19:48:36', 58.4325365, -150.9202813]])
我可以一次做一列:
a = dat[~(dat[:,2]==0), :]
它返回第 3 列中的值不等于 0 的行。我可以对多列迭代地执行此操作,但在一个命令中完成所有操作会很方便。
我认为类似以下两个示例的方法会起作用(但它们不起作用):
a = dat[~(dat[:,2]==0), :] or dat[~(dat[:,3]==0), :]
a = dat[~(dat[:,2&3]==0), :]
希望我缺少一些简单的语法,并且在 numpy 帮助中找不到。
【问题讨论】: