numpy - 带有 mkl 的 numpy 不支持对象数组?
问题描述
我最近从使用 open blas 编译的 numpy 切换到使用 mkl 编译的 numpy。在纯数字运算中,矩阵乘法的速度明显加快。但是,当我运行一些代码时,我一直在使用哪些乘以包含 sympy 变量的矩阵,我现在得到了错误
'当前不支持对象数组'
有没有人知道为什么 mkl 是这种情况而不是 open blas 的情况?
解决方案
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
将是 object dtype
。对象数组的数学运算取决于将操作委托给对象自己的方法。它不能由快速编译的库执行,这些库仅适用于 和等c
类型。float
double
作为一般规则,您不应该尝试混合numpy
和sympy
. 数学是命中注定的,而且永远不会很快。使用sympy's
自己的Matrix
模块,或数值工作lambdify
的sympy
表达式。
什么mkl
版本?您可能必须与该汇编的创建者一起探索这一点。
推荐阅读
- ios - Swift 4 - 在我的 RESTful API 调用中,“后台线程”在哪里?
- c++ - cuda中的高斯模糊3d图像,有时有效,有时无效
- javascript - 用不同的逻辑替换我的 continue 语句
- alexa - Alexa 开发者控制台回复“请求的技能响应有问题”
- amazon-web-services - 如何让用户定义短的 aws s3 预签名 url
- javascript - 为什么我的随机数函数总是返回相同的输出?
- javascript - 循环每个输入的相对记录并纠正重复记录
- php - 使用 php 验证 RFC3339 日期时间
- mysql - Laravel 悲观锁无法正常工作
- java - 在 java 9 中如何通过 websocket 发送 JSON 数据