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

Программы на Python
Anonymous
Сравнение массивов NumPy, чтобы NaN сравнивались равными

Сообщение Anonymous »

Есть ли идиоматический способ сравнения двух массивов 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)))
но он неуклюж и создает все эти промежуточные массивы.

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

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

Вернуться в «Python»