2012-05-14 40 views
1

首先,我有一個輸出陣列像這樣(在4×1的矩陣):如何在數組列表中設置十進制值(使用Python)?

array([[ -2.22044605e-15], 
    [ 2.82842712e+01], 
    [ -2.22044605e-15], 
    [ 2.82842712e+01]]) 

和輸出,i。從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」%(數字)方法,仍然不成功。我想知道是否有任何最好的方法來設置數組列表中的十進制值?

最好的問候,

格倫

+1

我已經讀過你的問題三次,我不能讓他廣告或尾巴。 – NPE

+0

@aix感謝您的反饋,我編輯了我的問題。我希望它更容易理解 – glwilliam

回答

2

你的返回值有很大的不同命令:

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]) 
+0

Danke Schuh,作品的魅力! :) – glwilliam

0

這是你在找什麼? 印刷:

for arr in wheel_lists: 
    for element in arr: 
    print '%.2f' % element 

設置:

for arr in wheel_lists: 
    for i in xrange(len(arr)): 
    arr[i] = float('%.2f' % 3.14) 
相關問題