首先,我有一个像这样的输出数组(在 4x1 的矩阵中):
array([[ -2.22044605e-15],
[ 2.82842712e+01],
[ -2.22044605e-15],
[ 2.82842712e+01]])
我从 4x3 和 3x1 矩阵乘法的返回值中收到输出,如下所示:
def inverse_kinematic(self,Degree):
# [W] = (1/r)[R][V]
self.R = array ( [[-1, 1, self.X1+self.Y1], [1, 1, self.X2-self.Y2],
[-1, 1, self.X3+self.Y3], [1, 1, self.X4-self.Y4]])
self.V = array ( [[self.Vt*math.cos(math.radians(Degree))],
[self.Vt*math.sin(math.radians(Degree))],[ self.Wv]])
self.W = []
self.W = (1/self.r)*dot(self.R,self.V)
return self.W
我真的想要像上面那样输出数组,但是以两位十进制值表示,如下所示:
array([[ 0.00],
[ 28.28],
[ 0.00],
[ 28.28]])
我厌倦了使用“%.2f”%(数字)方法,但仍然没有成功。我想知道是否有最好的方法来在数组列表中设置十进制值?
最诚挚的问候,
格伦
最佳答案
您的返回值的顺序非常不同:
2.82842712e+01 约 2.8
-2.22044605e-15 = 0.0000000000000022 大约 0
您的数值评估很可能在分析上为零,而较小的值只是计算错误。
矩阵运算在 numpy 中很容易完成,你可以使用这样的东西:
>>> import numpy as np
>>> a = np.array([[11,12,13],[21,22,23],[31,32,33],[41,42,43]])
>>> b = np.array([[1],[2],[3]])
>>> x = np.dot(a,b)
>>> x
array([[ 74],
[134],
[194],
[254]])
在这种情况下,您可能会满意
>>> x = np.array([0.923423,0.12341235,0.213453241])
>>> x.round(2)
array([ 0.92, 0.12, 0.21])
numpy 数组很方便,因为您不必迭代它们的条目:
>>> a = np.array([1,2,3,4,5])
>>> a
array([1, 2, 3, 4, 5])
>>> a+2
array([3, 4, 5, 6, 7])
>>> a*10
array([10, 20, 30, 40, 50])
>>> np.sin(a)
array([ 0.84147098, 0.90929743, 0.14112001, -0.7568025 , -0.95892427])
关于python - 如何在数组列表中设置十进制值(在 Python 中)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10588079/