2012-05-08 11 views
3

次のスクリプトではあまり理解できないエラーが発生しています。私は2つのnumpyの配列がhappliy複数のことができるだろうと思ったが、私はこのエラーを取得しておいてください。2つのnumpy配列を掛けたときの誤差

TypeError: unsupported operand type(s) for *: 'numpy.ndarray' and 'numpy.ndarray' 

スクリプトは以下の通りです:

def currents_to_resistance(Istack1, Istack2, A_list, x_list): 

    #Error Calcs 
    Videal_R1 = (1.380648e-23 * (27+273.15))/(1.6021766e-19) 
    print Videal_R1 
    Istack1 = np.array(Istack1) 
    Istack2 = np.array(Istack2) 
    print Istack1 
    print Istack2 

    g = Istack1*Istack2 
    print g 

印刷Istack1 Istack2乗算

として出てくる前に
['0.0005789047' '0.0005743839' '0.0005699334' '0.000565551' '0.0005612346' 
'0.0005569839' '0.0005527969' '0.0005486719' '0.000544608' '0.0005406044' 
'0.0005366572' '0.000532768' '0.000528934' '0.0005251549' '0.0005214295' 
'0.0005177562' '0.0005141338' '0.0005105614' '0.000507039' '0.0005035643' 
'0.0005001368' '0.0004967555' '0.0004934193' '0.0004901279' '0.0004868796' 
'0.0004836736'] 
['0.000608027' '0.0006080265' '0.0006080267' '0.0006080267' '0.0006080261' 
'0.0006080261' '0.0006080262' '0.0006080261' '0.0006080263' '0.0006080272' 
'0.0006080262' '0.0006080262' '0.0006080257' '0.0006080256' '0.0006080258' 
'0.0006080256' '0.0006080252' '0.0006080247' '0.000608025' '0.0006080249' 
'0.000608025' '0.0006080251' '0.0006080249' '0.0006080254' '0.0006080251' 
'0.0006080247'] 

私は

Re_list = currents_to_resistance(full_list[i][0],full_list[i][1], temp_A, temp_x) 
を使用して関数を呼び出します

私はここで何が欠けていますか?

答えて

6

変換文字列配列は、最初の配列を浮上さ:

Istack1 = np.array(Istack1, np.float) 
Istack2 = np.array(Istack2, np.float) 
2

ndarrayの文字列のように見えます。

>>> numpy.array(['1', '2', '3']) * numpy.array(['1', '2', '3']) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: unsupported operand type(s) for *: 'numpy.ndarray' and 'numpy.ndarray' 

あなたは、あなたがそれらを乗算したい場合はfloats Sまたはint秒に変換する必要があります:このようなものであるかもしれないことを行うには

>>> numpy.array([1, 2, 3]) * numpy.array([1, 2, 3]) 
array([1, 4, 9]) 

一つの方法を。 HYRYから盗み、(私は明白なアプローチを忘れてしまった)

Istack1 = np.array([float(i) for i in Istack1]) 

または:リスト内包を使用して、

Istack1 = np.array(map(float, Istack1)) 

を(。しかし、それはあなたが関数に渡しているかに依存)または:

Istack1 = np.array(Istack1, dtype='f8') 
+0

もちろん!どうもありがとう。リストの理解方法はエラーを投げますが、浮動小数点型のマップとHYRYのバージョンが動作します。私はcsvファイルの列を追加して生成されたタプルのスライスを渡しています。私は関数に渡す前に浮動小数点数の変換を行うことができると思います。 –

関連する問題