Python中Numpy和MpMath之间的互操作性

时间:2014-03-01 11:49:29

标签: python arrays numpy mpmath

我有一个numpy数组A,其mpf元素具有十进制精度100.如果我决定将A的numpy点积与它自身一起使用,那么这个精度会被抛弃吗?

如果是这种情况,有没有办法将numpy数组转换为mpmath矩阵,那么我可以保持精度吗?

1 个答案:

答案 0 :(得分:5)

Numpy数组可以保存对象,特别是dot个对象,它们的方法(如import mpmath import numpy mpmath.mp.dps = 25 # higher precision for demonstration a = [mpmath.sin(mpmath.pi*n/3) for n in range(99)] b = numpy.array(a) b.dot(b) )可以使用这些对象的加法/乘法方法。例如:

mpf('49.50000000000000000000000165')

输出c = numpy.array(a, dtype=float) c.dot(c)

为了进行比较,如果在转换为numpy时将数组元素转换为双精度浮点数,则会发生这种情况:

49.499999999999993

输出while num_students < 0 and not num_students: num_students = int(input("How many students are you entering? ")) 。因此,当在第一个版本中调用点方法时,将保留mpmath提供的更高精度。