删除numpy数组中的坏数据对

时间:2014-09-22 00:35:45

标签: python numpy

我正在使用大量数据,但每隔一段时间我都会使用nan而不是值。我需要以某种方式删除它们。以下是我的数据集

的示例
1 2
3 4
nan 5
6 7
8 nan
9 10

我想删除坏数据:

 1 2
 3 4
 6 7
 9 10

2 个答案:

答案 0 :(得分:5)

如果您只是使用numpy,请使用逻辑索引:

import numpy as np

x = np.array([[     1.,      2.],
              [     3.,      4.],
              [ np.nan,      5.],
              [     6.,      7.],
              [     8.,  np.nan],
              [     9.,     10.]])

# find which rows contain nans
ix = np.any(np.isnan(x), axis=1)

# remove them
x = x[~ix]

给出了:

array([[  1.,   2.],
       [  3.,   4.],
       [  6.,   7.],
       [  9.,  10.]])

这适用于任意列数的数组:如果一行在至少一列中包含NaN,则会将其删除。

或者,如果您正在使用pandas,只需使用dropna

import pandas as pd
df = pd.DataFrame(x)
df.dropna()

答案 1 :(得分:1)

你可以这样做:

my_numpy_arr = my_numpy_arr[(my_numpy_arr==my_numpy_arr).all(1)]