我有一个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的相应行之间的误差。
任何人都可以帮助我吗?
答案 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))]