返回非NA值numpy数组

时间:2018-01-23 21:04:10

标签: python arrays numpy

我有一个numpy数组,有很多NaN值,在某些行中有非NA值。

现在,我希望得到具有非NA值(即数值)的行的所有索引,并希望从不同的numpy数组中提取这些特定行索引的值。所以我们有:

Y_test,一个长度为698的np数组,其中包含某些行的数值

Y_test
array([ nan,  13.,  nan,  10.,  nan])

Y_pred,一个长度为698的np数组,每行有数值

Y_pred
array([ 0.96,  0.57,  0.33,  0.43,  0.83])

我想只在np_array1中使用数值的行索引中提取np_array2的数值。

例如:

array([ 0.57, 0.43])

我这样做是为了计算Y_test的非NA行与Y_pred的相应行之间的误差。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

您可以使用isnan查找数组为nan的索引,然后使用反向。

np.isnan(Y_test)
array([ True, False,  True, False,  True], dtype=bool)
Y_pred[~np.isnan(Y_test)]
array([ 0.57,  0.43])

修改

根据进一步的输入我明白你的两个数组有不同的大小。在这种情况下,您可以使用flatnonzero作为@PaulPanzer指出。

np.flatnonzero(~np.isnan(Y_test))
array([1, 3])
Y_pred[np.flatnonzero(~np.isnan(Y_test))]