mpmath.mpfs的方形数组的numpy.linalg.det

mpmath.mpfs的方形数组的numpy.linalg.det,numpy,mpmath,Numpy,Mpmath,我有以下问题: >>> import numpy as np >>> import mpmath as mp >>> v1 = [mp.mpf(1), mp.mpf(2)] >>> v2 = [mp.mpf(3), mp.mpf(4)] >>> np.dot(v1,v2) mpf('11.0') >>> M2 = [[mp.mpf(1), mp.mpf(2)], [mp.mpf(3), m

我有以下问题:

>>> import numpy as np
>>> import mpmath as mp
>>> v1 = [mp.mpf(1), mp.mpf(2)]
>>> v2 = [mp.mpf(3), mp.mpf(4)]
>>> np.dot(v1,v2)
mpf('11.0')
>>> M2 = [[mp.mpf(1), mp.mpf(2)], [mp.mpf(3), mp.mpf(4)]]
>>> np.linalg.det(M2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "~/anaconda/lib/python2.7/site-packages/numpy/linalg/linalg.py", line 1776, in det
    r = _umath_linalg.det(a, signature=signature)
TypeError: No loop matching the specified signature and casting
was found for ufunc det
>>将numpy作为np导入
>>>将mpmath导入为mp
>>>v1=[mp.mpf(1),mp.mpf(2)]
>>>v2=[mp.mpf(3)和mp.mpf(4)]
>>>np.dot(v1,v2)
强积金(“11.0”)
>>>M2=[[mp.mpf(1),mp.mpf(2)],[mp.mpf(3),mp.mpf(4)]]
>>>np.linalg.det(平方米)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“~/anaconda/lib/python2.7/site packages/numpy/linalg/linalg.py”,第1776行,详细信息
r=\u umath\u linalg.det(a,签名=签名)
TypeError:没有与指定签名和强制转换匹配的循环
已为ufunc det找到
我对
numpy
linalg.det
方法的调用对于非
mpmath
条目可以正常工作,但是我在给它
mp.mpf
s时得到了上面的错误。旧问题表明,如果条目是
mp.mpf
s(上面已确认),那么
np.dot
就可以正常工作,因此我的问题是,为什么这不会延续到
np.linalg.det
,以及我能做些什么来解决这个问题。上下文是,我已经用
numpy
(no
mpmath
)编写了大量代码,并且刚刚意识到我需要更高的数值精度,因此理想情况下,有一个解决方案不涉及转换所有
numpy
代码


提前感谢您的回答。

如链接所示,
dot
有一个分支,可以处理对象数据类型数组,尽管速度远远低于数字数据类型
det
没有该选项。它只使用编译的数字代码。对象数据类型数组的数学是命中或未命中的,而且总是较慢。@hpaulj好的,所以听起来似乎没有一个好的解决方法来解决
mpmath
。是否有一个与
numpy
方法更好接口的更高数值精度的不同库?为什么不使用
mpmath.det
?啊,我没有意识到
mp.det
np.array
兼容,但我现在知道它应该可以工作了。计算反演可能仍然是一个问题(因为
mpmath
将反演视为一个属性或从
**-1
中处理),但我可能可以解决这个问题。谢谢你们为我指明了正确的方向!