いくつかの異なるオブジェクト(プログラミング以外の意味でのオブジェクトを意味します)に関する一連のデータを含むネストされた辞書があります。ディクショナリの形式はallData[i][someDataType]です。ここで、iはデータがあるオブジェクトの番号指定であり、someDataTypeは問題のオブジェクトに関連付けられた特定のデータ配列です。
これで、オブジェクトごとに計算を実行するために特定のデータ配列を必要とする、定義した関数ができました。データ配列はと呼ばれcleanFDF
ます。だから私はこれを私の関数に、それが機能するために必要な他のたくさんのものと一緒に供給します。私はそれをこのように呼びます:
rm.analyze4complexity(allData[i]['cleanFDF'], other data, other data, other data)
関数自体の中で、私はすぐにcleanFDF
データを別の変数名、つまり。に再割り当てしますclFDF
。つまり、最終結果は次のとおりです。
clFDF = allData[i]['cleanFDF']
次に、特定のしきい値を下回るすべてのデータをゼロにする必要があります。
clFDF[ clFDF < threshold ] = 0
OK-関数は想定どおりに機能します。しかし、元のcleanFDFデータをメインスクリプトにプロットし直そうとすると、clFDFでゼロにされたエントリもでゼロになりallData[i]['cleanFDF']
ます。WTF?明らかに、私が理解していない何かがここで起こっています。
さらに奇妙なことに(私の観点から)、関数を呼び出す前に配列を別の変数に「保存」することで、これを回避するために厄介な問題を解決しようとしました。つまり、私はします
saveFDF = allData[i]['cleanFDF']
次に、関数を実行cleanFDF
し、「保存された」データでエントリを更新します。
allData[i].update( {'cleanFDF':saveFDF} )
しかし、どういうわけか、関数内でclFDF [clFDF <threshold] = 0を実行するだけで、変更clFDF
さsaveFDF
れallData[i]['cleanFDF']
、メインのfriggin'スクリプトでは、同じ配列インデックスですべての全体がゼロになります。どういうわけか、それらはすべて関連するグローバル変数のようですが、私はどこにもそのような宣言をしていません...
私は絶望的なPython初心者なので、それがどのように機能するかについて何かを理解していないことは間違いありません。どんな助けでも大歓迎です!