Массивы объектов не поддерживаются в numpy с помощью mkl? - PullRequest
0 голосов
/ 12 апреля 2020

Я недавно переключился с numpy, скомпилированного с открытым blas, на numpy, скомпилированного с MKL. В чистых числах c операций было явное ускорение для умножения матриц. Однако, когда я запустил какой-то код, который использовал, который умножает матрицы, содержащие переменные sympy, я теперь получаю ошибку

«Массивы объектов в настоящее время не поддерживаются»

У кого-нибудь есть информация о том, почему это дело за мкл а не за открытый блас?

1 Ответ

1 голос
/ 12 апреля 2020

Примечания к выпуску 1.17.0

Support of object arrays in matmul
It is now possible to use matmul (or the @ operator) with object arrays. For instance, it is now possible to do:

from fractions import Fraction
a = np.array([[Fraction(1, 2), Fraction(1, 3)], [Fraction(1, 3), Fraction(1, 2)]])
b = a @ a

Используете ли вы @ (matmul или dot)? Массив numpy, содержащий sympy объектов, будет объектом dtype. Математика для массивов объектов зависит от делегирования действия собственным методам объекта. Это не может быть выполнено быстро скомпилированными библиотеками, которые работают только с c типами, такими как float и double.

Как правило, вы не должны пытаться смешивать numpy и sympy. Математика - это удар или промах, и никогда не быстрая. Используйте sympy's собственный Matrix модуль или lambdify выражения sympy для цифры c работа.

Какая версия mkl? Возможно, вам придется изучить это с создателем этого сборника.

...