最佳删除numpy中的行或列以删除丢失的数据

时间:2018-01-20 11:35:27

标签: python arrays numpy missing-data

我有一个大的numpy 2D数组,其中包含许多缺失值(例如NaN),因此某些行和某些列可能有多个缺失元素。

我希望删除(或屏蔽掉)行和/或列以创建数组的子集,同时保留尽可能多的数据。困难在于如果我删除例如如果一行有多个NaN,则可能无需删除多个列,反之亦然。

我的猜测是,最佳解决方案最好通过例如移除,例如迭代地完成。第一行或第一列或至少一个缺少元素且具有最少的非缺失值,删除它,然后再次查找具有该属性的下一行或列等,直到没有缺失值。

我怀疑这是一个已知问题,并且可能存在一次性解决方案。如果是这样,它有名字吗?还有一个Python / numpy实现,而不是必须自己滚动?

编辑 - 添加了红利问题:我可以对可能会删除行的情况进行成像,或者稍微更喜欢删除列。但是,当然,如果(比方说)我们更喜欢删除行,但是有一个列只包含除了一个值之外的所有值,那么删除列是一个明智的选择,而不是除了其中一行之外的所有行。所以任何人都可以提供参数化函数,使得对于参数r,如果r = 1,我们总是删除行,如果r = 0,我们总是删除列,但是对于中间值,我们通过不同的相对量来加权行删除和列删除(例如,如果r = 0.5,那么列和行删除都不是首选,我们最终会最大化保留的数据量)

0 个答案:

没有答案