Сравнение массивов NumPy так, чтобы значения NaN сравнивались равными

Существует ли идиоматический способ сравнения двух массивов NumPy, который рассматривал бы NaN как равные друг другу (но не равные ничему другому, кроме NaN).

Например, я хочу, чтобы следующие два массива сравнивались как равные:

np.array([1.0, np.NAN, 2.0])
np.array([1.0, np.NAN, 2.0])

и следующие два массива сравнивались как неравные:

np.array([1.0, np.NAN, 2.0])
np.array([1.0, 0.0, 2.0])

Я ищу метод, который давал бы скалярный логический результат.

Это можно сделать следующим образом:

np.all((a == b) | (np.isnan(a) & np.isnan(b)))

но это неуклюже и создает все эти промежуточные массивы.

Есть ли способ, который удобен для глаз и лучше использует память?

П.С. Если это поможет, известно, что массивы имеют одинаковую форму и тип.

21
задан sega_sai 6 June 2012 в 12:04
поделиться