私はこの事故でこれに遭遇しましたが、何が起こっているのか理解できません。私は画像を使ってK平均クラスタリング割り当てを行い、できるだけ速く実行させるためにコードをベクトル化しようとしています。私は値がそれぞれ意味計算に含まれるべきピクセルを選択するために私のK配列を使用しますが、私は同意する軸を取得できませんでした、それぞれの新しい手段の計算ではnumpy関数は、軸引数の論理if演算子をどのように扱いますか?
image_values =np.array([[[ 0.36302522 0.51708686 0.20952381]
[ 0.46330538 0.69915968 0.2140056 ]
[ 0.7904762 0.93837535 0.27002802]
[ 0.78375351 0.89187676 0.24201682]
[ 0.57871151 0.79775912 0.24593839]
[ 0.2896359 0.39103645 0.64481789]
[ 0.23809525 0.30924368 0.64257705]]
[[ 0.36302522 0.51708686 0.20952381]
[ 0.46330538 0.69915968 0.2140056 ]
[ 0.7904762 0.93837535 0.27002802]
[ 0.78375351 0.89187676 0.24201682]
[ 0.57871151 0.79775912 0.24593839]
[ 0.2896359 0.39103645 0.64481789]
[ 0.23809525 0.30924368 0.64257705]]
[[ 0.36302522 0.51708686 0.20952381]
[ 0.46330538 0.69915968 0.2140056 ]
[ 0.7904762 0.93837535 0.27002802]
[ 0.78375351 0.89187676 0.24201682]
[ 0.57871151 0.79775912 0.24593839]
[ 0.2896359 0.39103645 0.64481789]
[ 0.23809525 0.30924368 0.64257705]]])
means = np.array([[0.909,0.839,0.6509],[0.813,0.808,0.694],[0.331,0.407,0.597]]) #random centroids
err = 1
while err > .01:
J = [np.sum((image_values-avg)**2, axis = 2) for avg in means]
K = np.argmin(J, axis = 0)
old_means = means
means = np.array([np.mean(image_values[K==i], axis ==True) for i in range(len(means))])
print means
err = abs(sum(old_means)-sum(means))
print err
:私は、次のコードを思い付きました。私は実際に軸= 3の代わりに軸== 3とタイプし、それがうまくいったタイプミスを作った!私は数多くの異なる数字を試してみましたが、数字が何であるかは関係ありません。結果は同じです。私は彼らが働かなかった等価演算子で数とブール演算子の束を試しました。私はドキュメンテーションを見てきましたが、私はそれを理解することができませんでした。
配列関数の1つの引数の軸引数に論理がある場合、numpyは何をしますか?
ありがとうございます!
Pythonでは、 '' True''は1に評価され、 '' False''は数値式で0と評価されます。 '' 'int(True) - > 1''' – wwii
それは本当です - 質問は私が軸引数に何を置くかに関するものではありません。私はそこに何かを置くことができることを発見しました。問題は、軸の引数で論理if演算子が何をするかについてです。質問で正しい言葉を使用していますか(引数、論理ifなど)? – DanGoodrick
どのnumpyのバージョンを使用していますか? ( 'numpy .__ version__'をチェックしてください。) –