1

まず第一に、私はこのような出力配列を持っています(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

そして、私は本当に上記のように配列を出力したいのですが、次のように2桁の10進値で出力します。

   array([[ 0.00],
   [  28.28],
   [ 0.00],
   [  28.28]])

「%.2f」%(数値)メソッドのようなものを使用するのに疲れましたが、それでも成功しません。配列のリストに10進値を設定するための最良の方法はありますか?

よろしくお願いします、

グレン

4

2 に答える 2

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])
于 2012-05-14T17:53:38.203 に答える
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)
于 2012-05-14T17:36:13.910 に答える