Python 从两个Numpy数组中删除相应的项

Python 从两个Numpy数组中删除相应的项,python,arrays,numpy,Python,Arrays,Numpy,我有一个很简单的问题,但我不太可能在网上找到解释 我有一个通量值数组和一个对应的时间值数组。显然,这两个阵列是一对一的(每个时间值对应一个通量值)。然而,我的一些通量值是NaN 我的问题是:当我从通量数组中移除NAN时,如何从时间数组中移除相应的值 这些数组足够大(几千个条目),手工操作会非常麻烦。您可以尝试布尔索引: In [13]: time Out[13]: array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9.,

我有一个很简单的问题,但我不太可能在网上找到解释

我有一个通量值数组和一个对应的时间值数组。显然,这两个阵列是一对一的(每个时间值对应一个通量值)。然而,我的一些通量值是NaN

我的问题是:当我从通量数组中移除NAN时,如何从时间数组中移除相应的值


这些数组足够大(几千个条目),手工操作会非常麻烦。

您可以尝试布尔索引:

In [13]: time
Out[13]: array([  0.,   1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   9.,  10.])

In [15]: flux
Out[15]: array([  1.,   1.,   1.,   1.,   1.,  nan,  nan,  nan,   1.,   1.,   1.])


In [16]: time2 = time[~np.isnan(flux)]
In [17]: flux2 = flux[~np.isnan(flux)]  
In [18]: time2
Out[18]: array([  0.,   1.,   2.,   3.,   4.,   8.,   9.,  10.])

In [19]: flux2
Out[19]: array([ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.])
如果不再需要原始数组,只需编写
time=time[~np.isnan(flux)]

更复杂的方法是使用:


您可以尝试布尔索引:

In [13]: time
Out[13]: array([  0.,   1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   9.,  10.])

In [15]: flux
Out[15]: array([  1.,   1.,   1.,   1.,   1.,  nan,  nan,  nan,   1.,   1.,   1.])


In [16]: time2 = time[~np.isnan(flux)]
In [17]: flux2 = flux[~np.isnan(flux)]  
In [18]: time2
Out[18]: array([  0.,   1.,   2.,   3.,   4.,   8.,   9.,  10.])

In [19]: flux2
Out[19]: array([ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.])
如果不再需要原始数组,只需编写
time=time[~np.isnan(flux)]

更复杂的方法是使用:


这正是我需要的!我已经在使用~np.isnan(),但我没有想到告诉时间数组使用通量数组进行索引。这真的应该是显而易见的+一个简单的问题解决方案!这正是我需要的!我已经在使用~np.isnan(),但我没有想到告诉时间数组使用通量数组进行索引。这真的应该是显而易见的+一个简单的问题解决方案!