我有一个numpy数组A,其mpf元素具有十进制精度100.如果我决定将A的numpy点积与它自身一起使用,那么这个精度会被抛弃吗?
如果是这种情况,有没有办法将numpy数组转换为mpmath矩阵,那么我可以保持精度吗?
答案 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提供的更高精度。