Проверка двух элементарных эквивалентных массивов по эквивалентам или без них со значениями с плавающей запятой - PullRequest
0 голосов
/ 07 мая 2018

Я хочу проверить, эквивалентны ли два пустых массива.

Код: импорт numpy как np

def numpy_equal():
    x = np.array([2, 3, 1, 0.000000000000001000000000000000000000002])
    y = np.array([2, 3, 1, 0.000000000000001000000000000000000000001])

    #assert np.all(x == y)
    #assert np.array_equal(x, y)
    assert np.allclose(x ,y)
    #assert np.isclose(x, y)

numpy_equal()

Я пробовал все это, но он говорит, что оба массива равны. Если после десятичного числа у меня есть длинные цифры (например, например, 0,00000000000000000000000000000000100000002), и я хочу сравнить эти значения, как получить их с помощью массивов?

Могу ли я повысить уровень допуска?

1 Ответ

0 голосов
/ 07 мая 2018

Вы можете использовать модуль Python decimal для таких длинных операций с плавающей точкой:

from decimal import Decimal
import numpy as np

def numpy_equal():
    x = np.array([2, 3, 1, Decimal("0.000000000000001000000000000000000000001")])
    y = np.array([2, 3, 1, Decimal("0.000000000000001000000000000000000000002")])
    assert np.all(x == y) # raises
    assert np.array_equal(x, y)

numpy_equal()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...