使用mkl的numpy上不支持对象数组



我最近从用openblas编译的numpy切换到用mkl编译的numpy。在纯数值运算中,矩阵乘法的运算速度明显加快。然而,当我运行一些代码时,我一直在使用它来乘以包含sympy变量的矩阵,我现在得到了错误

"当前不支持对象数组">

有人知道为什么mkl而不是openblas会出现这种情况吗?

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(?包含sympy对象的numpy数组将是对象dtype。对象数组的数学运算取决于将操作委派给对象自己的方法。它不能由快速编译的库执行,这些库只适用于c类型,如floatdouble

一般来说,您不应该尝试混合使用numpysympy。数学是偶然的,从不快速。使用sympy's自己的Matrix模块,或使用lambdifysympy表达式进行数值运算。

mkl的版本是什么?您可能需要与该汇编的创建者一起探索这一点。

最新更新