2016-04-19 2 views
0

私はPythonには新しく、さらにNumpyには新しいです。ナンシーアレイをリストに追加する

本質的には、これらの値の三角関数に基づいて配列を計算し、次に各インデックスがそのインデックスに対応する「三角形配列」である新しいリストを作成するアングル(不定長の)のリストを取っています。角度リストに作成された値。

現在、ループは正しい配列を計算し、一度に1つずつ出力しますが、関数の最終出力は各配列のリストではなく単一の配列になります。

ご協力いただければ幸いです!

  def tmatrices(angles): 
       for angle in angles: 
        tmatrices = [] 
        cos = math.cos(angle) 
        cos2 = (math.cos(angle)) ** 2) 
        sin = math.sin(angle) 
        sin2 = (math.sin(angle)) ** 2) 
        T = np.array((((cos2), (sin2), (sin*cos)), ((sin2), (cos2), ((-sin) * cos)), ((-2 * sin * cos), (2 * sin * cos), (cos2 - sin2)))) 
        print (T) 
        tmatrices.append(T) 
       return tmatrices 
+1

ループの最初の行は、繰り返しごとに 'tmatrices'をリセットします。 – Christoph

+0

もちろんありがとう! –

答えて

0

は、私はあなたが失態のビットとしてきたと思います

tmatrices = [] 

おそらくループの外にすべきですか?あなたはより多くのnumpythonically numpyの使用することを好むと

行異なる機能を表し、その列の角度によって決定行列を返します
import numpy 


def tmatrix(angles): 
    cos = numpy.cos(angles)[numpy.newaxis, :] 
    cos2 = cos**2 
    sin = numpy.sin(angles)[numpy.newaxis, :] 
    sin2 = sin**2 
    T = numpy.concatenate((cos2, sin2, sin*cos, sin2, cos2, -sin * cos, -2 * sin * cos, 2 * sin * cos, cos2 - sin2), axis=0) 
    return T 


angles = numpy.arange(0, 2*numpy.pi, numpy.pi/10) 
print tmatrix(angles) 

のために行くかもしれない、と述べた

+0

これで、このコード内で何が起こっているのかが完全にはわかりません(私の経験は限られていますが、クイックチェックの後、このmthodは別個のマトリックスのリストとは対照的に1つの大きなマトリックスを作成しません)。 –

+0

はい、大規模な行列です。これはあまり分かりにくい方法のように感じるかもしれませんが、行列全体の操作を一度に行うことができます。 – KeithWM

関連する問題