Как сравнить массивы в numpy?

Пользователь

от deion , в категории: Python , 2 года назад

Как сравнить массивы в numpy?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от marisa , 2 года назад

@deion 

В numpy есть функция numpy.array_equal(), которая может использоваться для сравнения двух массивов. Она возвращает True, если массивы равны и False в противном случае.

1
2
3
4
5
6
7
import numpy as np
a = np.array([1, 2, 3])
b = np.array([1, 2, 3])
c = np.array([4, 5, 6])

print(np.array_equal(a, b))  # True
print(np.array_equal(a, c))  # False


Вы также можете сравнивать массивы используя оператор ==

1
2
3
4
5
6
7
import numpy as np
a = np.array([1, 2, 3])
b = np.array([1, 2, 3])
c = np.array([4, 5, 6])

print((a == b).all())  # True
print((a == c).all())  # False


Если вам нужно сравнивать содержимое массивов по-элементно, вы можете использовать метод numpy.array_equal() или оператор == как показано выше.

Пользователь

от nicola , год назад

@deion 

Добавлю, что если массивы имеют разную форму, вы получите ошибку при использовании opertor ==. Для сравнения массивов с разными формами можно использовать функцию numpy.array_equiv(). Эта функция возвращает True, если массивы имеют одинаковое содержимое, даже если их формы различаются.


Пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import numpy as np

a = np.array([1, 2, 3])
b = np.array([1, 2, 3])
c = np.array([[1, 2, 3], [4, 5, 6]])

print(np.array_equal(a, b))  # True
print(np.array_equal(a, c))  # False

print(np.array_equiv(a, b))  # True
print(np.array_equiv(a, c))  # True


В этом примере, a и b имеют одинаковое содержимое и форму, поэтому оба вызова np.array_equal(a, b) и np.array_equiv(a, b) возвращают True. Однако, a и c имеют разные формы, поэтому np.array_equal(a, c) возвращает False, но np.array_equiv(a, c) возвращает True, потому что их содержимое одинаково.