Вывод нескольких значений из выражения с использованием decimal.Decimal? - PullRequest
0 голосов
/ 05 мая 2020

Предположим, у меня есть выражение, включающее модуль decimal, в котором я хочу ввести несколько значений и получить несколько значений.

a=np.array([1,2,3])
b=np.array([4,5,6])
A=a.astype(object)
B=b.astype(object)

getcontext().prec = 100
x=Decimal(A+B)

Это вызывает ошибку, поскольку Decimal несовместимо с numpy массивы.

Как я могу передать несколько значений через выражение Decimal и получить несколько значений таким образом, чтобы я мог легко преобразовать выходные данные в число с плавающей запятой, а затем поместить их в массив numpy?

Причина, по которой я хотел бы это, заключается в том, что при определенных расчетах A+B вычисляется неправильно как float, но после вычисления Decimal(A+B) результирующий результат можно преобразовать в float и вызвать никаких дальнейших трудностей в расчетах.

РЕДАКТИРОВАТЬ: Я разрабатываю «чит-метод», но не знаю, есть ли у него ножки:

a=np.array([1,2,3])
b=np.array([4,5,6])
A=a.astype(object)
B=b.astype(object)

getcontext().prec = 100
for i in range (0,2):
    x=Decimal(A[i]+B[i])
    print(x)

Ключ здесь для отступа print(x), печатается 5 7 9. Если не удается найти истинное решение указанной выше проблемы, есть ли способ преобразовать 5 7 9 в np.array([5,7,9]). (Может быть, экспортируя как файл csv и снова импортируя в Python?)

1 Ответ

0 голосов
/ 05 мая 2020

Думаю, вы могли бы сделать это вручную вот так:

r = np.array(tuple(Decimal(x+y) for x, y in zip(A, B)), np.float64)
print(r)

Вывод:

[5. 7. 9.]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...