2

各要素の値をすべての配列要素の合計で割るだけで、配列の各要素に確率を割り当てることができます。numpy 配列の長いリストについて、python でこれを実行しようとしています。私のコード:

def calc_probs(self, array_list):

    for array in array_list:
        buffer=array.astype("float")
        s=sum(buffer)
        for e in np.nditer(buffer, op_flags=["readwrite"]):
            e/=s
        self.probs.append(buffer)

このコードは機能するはずです。実際、IPythonのインタラクティブモードに入力すると機能します。結果は、まさに私が望んでいるものです。しかし、コードをファイルに保存して実行すると、常に次の ValueError が発生します。

ValueError: 形状 () を持つブロードキャスト不可能な出力オペランドがブロードキャスト形状 (10) と一致しません

特にファイルから実行している場合に、このエラーが発生する理由がわかりません。誰か私に説明して、問題を解決するのを手伝ってくれませんか? どうもありがとう!

4

1 に答える 1

3

sumこれは__builtin__.sum、NumPy 配列を合計する方法がわからないため、配列を変更せずに返すだけです。e特異行列を 10x10 行列で除算しようとしているため、エラーが発生していますs

あなたがしたいs = np.sum(buffer)

このコード全体は、次のように簡略化できます。

self.probs.append(array / np.sum(array))
于 2012-06-11T14:44:30.830 に答える