2

大きな助けが必要です。このコードをチェックしてください:

import.math

dose =20.0
a = [[[2,3,4],[5,8,9],[12,56,32]]
     [[25,36,45][21,65,987][21,58,89]]
     [[78,21,98],[54,36,78],[23,12,36]]]
PAC = math.exp(-dose*a)

これが私のやりたいことです。しかし、私が得ているエラーは

TypeError: only length-1 arrays can be converted to Python scalars
4

3 に答える 3

2

そのためには本当に NumPy を使用する必要があります。そして、ネストされたループを使用してそれを行う方法は次のとおりです。

>>> for item in a:
...     for sub in item:
...         for idx, number in enumerate(sub): 
...             print number, math.exp(-dose*number)
...             sub[idx] = math.exp(-dose*number)

append前の配列をコピーして新しいアイテムをスタックするたびに、使用が遅くなります。enumerate を使用すると、その場で数値が変更されます。a のコピーを保持したい場合は、次のようにします。

 acopy = a[:]

数値があまりなく、NumPy が過剰な場合は、リスト内包表記を使用して上記を少し速く実行できます。

于 2012-09-06T08:50:20.040 に答える