2017-11-14 6 views
0

行列3D(3次元配列)に追加するデータ型numpy.complex128があります。私は以下のようなスクリプトを書いています。私がスクリプトを実行すると、「ComplexWarning:複素数値を実際に捨てて虚数部分を破棄する」という警告があり、3D行列の結果は虚偽の値を含まない真の価値でした。その行列3Dに実数と虚数の両方を加えたいのであれば、どうすれば修正できますか?3次元配列の複素数を加算する

for i in range (0, nper): 
    zz = [] 
    x = np.zeros((nl,2,2)) 
    for j in range (0, nl): 
     z = np.sqrt(phi*amu*res[j]/per[i]) 
     zz.append(complex(z,z)) 
     exp0 = np.exp((-2)*zz[j]/res[j]*thi[j]) 
     exp1 = complex(1,0)+exp0 
     exp2 = complex(1,0)-exp0 
    #matrix 3D 
     x[j,0,0] = exp1 
     x[j,0,1] = zz[j]*exp2 
     x[j,1,0] = exp2/zz[j] 
     x[j,1,1] = exp1 
+1

あなたのコードが不完全です。すべての種類の未定義の変数があります。それにもかかわらず、問題は配列を複雑に初期化していないことだと思います。 – kazemakase

+0

実際に私はスクリプト内に完全なコードを持っており、問題は行列3Dを実行しているときです。あなたが複雑な配列をどのように初期化するかの例を教えてもらえますか? –

+0

[複雑な値をnumpy配列に割り当てる](https://stackoverflow.com/questions/22016847/assigning-complex-values-to-numpy-arrays)の可能な複製 –

答えて

0

あなたはおそらくあなたのx配列が複雑であることnumpyの伝えるために逃した:

x = np.zeros((nl, 2, 2), dtype=np.complex128) 
関連する問題