ma.masked_array.__eq__
фактически реализуется в NumPy, но, возможно, он не имеет семантику вы ищете? Вы можете получить в документации с help(ma.masked_array.__eq__)
с переводчиком питона, в нем говорится:
Проверить, равен ли другой я поэлементно
Что я могу увидеть данный ваш пример: он делает сравнение, где данные отмечены как действительные и возвращают результат в поле данных маскированного массива. Везде, где данные были недействительными (для a или b) получившееся поле маскируемого массива маскируется.
>>> import numpy as np
>>> import numpy.ma as ma
>>> a = ma.masked_array([0,1,2,3],[True,False,False,False])
>>> b = ma.masked_array([0,1,2,3],[True,True,False,False])
>>> a==b
masked_array(data = [-- -- True True],
mask = [ True True False False],
fill_value = True)
>>> b = ma.masked_array([0,1,2,4],[True,True,False,False])
>>> a==b
masked_array(data = [-- -- True False],
mask = [ True True False False],
fill_value = True)
Если вы хотите проверки, что все поля являются действительными и равными вы могли бы использовать:
np.allfalse ((а == б) .data)
редактировать: на самом деле, я думаю, вам нужно будет:
not np.any((a==b).mask) and np.alltrue((a==b).compressed())
Если вы ва нт в проверки, что все допустимые поля равны вы могли бы использовать:
np.alltrue((a==b).compressed())
Как user2357112 объяснил в комментариях, numpy.testing
предоставляет функции для модульного тестирования на Numpy массивов, которые не могут быть то, что вы ищете. Это так, вы могли бы использовать обычную функцию assert
с примерами, которые я предоставил.
'numpy.testing' не предназначен для сравнения массивов numpy; все, что связано со сравнением, есть метод assert, совершенно не подходящий для сравнений массивов общего назначения. – user2357112
Какую семантику сравнения вы хотите, во всяком случае? По-видимому, вы хотите равных масок. Вы хотите получить равные значения? Точно равные элементы или до допуска? Идентичные типы? Идентичная макет памяти? Если ячейка маскируется в обоих массивах с маской, выполняются ли замаскированные значения в массиве данных? – user2357112