如何在sympy中四舍五入Matrix元素?

时间:2018-12-19 05:05:41

标签: python rounding sympy

我们知道

from sympy import *

x = sin(pi/4)
y = sin(pi/5)

A = Matrix([x, y])

print(x)
print(A.evalf())

显示

sqrt(2)/2
Matrix([[0.707106781186548], [0.587785252292473]])

所以

print(round(x.evalf(), 3))
print(round(y.evalf(), 3))

显示

0.707
0.588

但是我们如何以简洁的方式舍入矩阵中的所有元素,这样

print(roundMatrix(A, 3))

可以显示

Matrix([[0.707], [0.588]])

2 个答案:

答案 0 :(得分:2)

为什么不对像evalf(3)这样的参数使用方法evalf?

from sympy import *

x = sin(pi/4)
y = sin(pi/5)

A = Matrix([x, y])

print(x)
print(A.evalf(3))

输出

sqrt(2)/2
Matrix([[0.707], [0.588]])

答案 1 :(得分:0)

这对我有用

# Z is a matrix
from functools import partial

round3 = partial(round, ndigits=3)
Z.applyfunc(round3)
# if you want to save the result
# Z = Z.applyfunc(round3)