Python 当存在缺失值时,删除具有相同非缺失值的numpy数组列
我有一个numpy数组,我需要从中删除对于非缺失单元格具有相同值的列,并删除所有缺失值的列。 阵列:Python 当存在缺失值时,删除具有相同非缺失值的numpy数组列,python,arrays,numpy,missing-data,Python,Arrays,Numpy,Missing Data,我有一个numpy数组,我需要从中删除对于非缺失单元格具有相同值的列,并删除所有缺失值的列。 阵列: >>> x = np.array([[ 1., 2., 2., np.NaN, 2., 2., 1.], [ 2., np.NaN, 1., np.NaN, 2., 2., 1.], [np.NaN, 1., 1., np.NaN, 2., 2., 1.], [ 1., 2., np.NaN, np.NaN
>>> x = np.array([[ 1., 2., 2., np.NaN, 2., 2., 1.],
[ 2., np.NaN, 1., np.NaN, 2., 2., 1.],
[np.NaN, 1., 1., np.NaN, 2., 2., 1.],
[ 1., 2., np.NaN, np.NaN, 2., np.NaN, 0.],
[ 0., 1., 1., np.NaN, 2., np.NaN, 0.],
[ 1., 1., 1., np.NaN, 2., 2., 1.],
[np.NaN, 1., 0., np.NaN, 2., np.NaN, 2.],
[ 2., 1., 1., np.NaN, 2., 2., 1.]])
>>> x
array([[ 1., 2., 2., nan, 2., 2., 1.],
[ 2., nan, 1., nan, 2., 2., 1.],
[nan, 1., 1., nan, 2., 2., 1.],
[ 1., 2., nan, nan, 2., nan, 0.],
[ 0., 1., 1., nan, 2., nan, 0.],
[ 1., 1., 1., nan, 2., 2., 1.],
[nan, 1., 0., nan, 2., nan, 2.],
[ 2., 1., 1., nan, 2., 2., 1.]])
我可以删除缺少所有值的列(列索引3)
我可以删除所有行中具有相同值的所有列(列索引4)
但是,如何删除第6列(索引5),其中非缺失值相同,但缺失值的存在会扰乱布尔检查
编辑:期望的结果
array([[ 1., 2., 2., 1.],
[ 2., nan, 1., 1.],
[nan, 1., 1., 1.],
[ 1., 2., nan, 0.],
[ 0., 1., 1., 0.],
[ 1., 1., 1., 1.],
[nan, 1., 0., 2.],
[ 2., 1., 1., 1.]])
可以使用位运算符链接多个掩码。你基本上需要两个面具
- 一个用于
NaNs
- 检查第一行值是否等于列的其余部分
或
链接这两个条件,并检查所有
行是否满足条件:
m1 = np.isnan(x)
m2 = x[0] == x
x[:, ~(m2|m).all(0)]
array([[ 1., 2., 2., 1.],
[ 2., nan, 1., 1.],
[nan, 1., 1., 1.],
[ 1., 2., nan, 0.],
[ 0., 1., 1., 0.],
[ 1., 1., 1., 1.],
[nan, 1., 0., 2.],
[ 2., 1., 1., 1.]])
可以使用位运算符链接多个掩码。你基本上需要两个面具
- 一个用于
NaNs
- 检查第一行值是否等于列的其余部分
或
链接这两个条件,并检查所有
行是否满足条件:
m1 = np.isnan(x)
m2 = x[0] == x
x[:, ~(m2|m).all(0)]
array([[ 1., 2., 2., 1.],
[ 2., nan, 1., 1.],
[nan, 1., 1., 1.],
[ 1., 2., nan, 0.],
[ 0., 1., 1., 0.],
[ 1., 1., 1., 1.],
[nan, 1., 0., 2.],
[ 2., 1., 1., 1.]])
m1 = np.isnan(x)
m2 = x[0] == x
x[:, ~(m2|m).all(0)]
array([[ 1., 2., 2., 1.],
[ 2., nan, 1., 1.],
[nan, 1., 1., 1.],
[ 1., 2., nan, 0.],
[ 0., 1., 1., 0.],
[ 1., 1., 1., 1.],
[nan, 1., 0., 2.],
[ 2., 1., 1., 1.]])