Ошибка numpy в cross() с массивами dtype=objectPython

Программы на Python
Anonymous
Ошибка numpy в cross() с массивами dtype=object

Сообщение Anonymous »

Код: Выделить всё

import numpy as np
u = np.array([1, 2, -1], dtype=object)
v = np.array([-1, 1, 0], dtype=object)
np.cross(u, v)
не удается выполнить numpy._core._Exceptions._UFuncOutputCastingError: невозможно преобразовать вывод ufunc 'multiply' из dtype('O') в dtype('int64') с правилом приведения 'same_kind'
код>.

Код: Выделить всё

np.dot(u, v)
работает так, как ожидалось.
Использование dtype=object, поскольку вычисления с фактическими данными переполнят int64 и дадут неверные результаты (без предупреждения). Фактические значения представляют собой целые числа, содержащие около 15 значащих цифр (50 двоичных цифр).
Один из обходных путей — сделать все значения десятичными:

Код: Выделить всё

u = np.array(list(map(Decimal, [1, 2, -1])))
v = np.array(list(map(Decimal, [-1, 1, 0])))
np.cross(u, v)
Есть ли лучший обходной путь с использованием numpy?

Подробнее здесь: https://stackoverflow.com/questions/789 ... ect-arrays

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