我正在使用mpmath Python库进行一些计算以获得更高的精度,但我需要将结果转换为numpy本地类型。
更具体地说,我需要将包含mpf对象类型的mpmath矩阵转换为包含float类型的numpy.ndarray。
我已经通过一种原始方法解决了这个问题。
更具体地说,我需要将包含mpf对象类型的mpmath矩阵转换为包含float类型的numpy.ndarray。
我已经通过一种原始方法解决了这个问题。
# My input Matrix:
matr = mp.matrix(
[[ '115.80200375', '22.80402473', '13.69453064', '54.28049263'],
[ '22.80402473', '86.14887381', '53.79999432', '42.78548627'],
[ '13.69453064', '53.79999432', '110.9695448' , '37.24270321'],
[ '54.28049263', '42.78548627', '37.24270321', '95.79388469']])
# multiple precision computation
D = MPDBiteration(matr)
# Create a new ndarray
Z = numpy.ndarray((matr.cols,matr.rows),dtype=numpy.float)
# I fill it pretty "manually"
for i in range(0,matr.rows):
for j in range(0,matr.cols):
Z[i,j] = D[i,j] # or float(D[i,j]) seems to work the same
我的问题是:
有没有更好/更优雅/更简单/更聪明的方法来做到这一点?
更新:
反复阅读 mpmath 文档后,我发现了这个非常有用的方法:tolist(),可以按以下方式使用:
Z = np.array(matr.tolist(),dtype=np.float32)
看起来更好,更优雅(不需要for循环)
有更好的方法吗?我的第二个解决方案是否四舍五入或截断额外的数字?
tolist()
这个链接已经失效了。 - Tom