を返した場合、私は、配列aに部分を計算し、元の配列に結果をスタックしようとすると、次のスクリプトを書いた:のpython:ループが間違った結果
import numpy
a = numpy.array([[1, 4, 4.555],
[2, 3, 9.112],
[3, 1, 7.322],
[1, 5, 3.911]])
i = 0
b = numpy.ones((4,1))
if i <= 2:
b[i][0] = float(a[i][2])/(a[i][2]+a[i+1][2])
b[i+1][0] = float(a[i+1][2])/(a[i][2]+a[i+1][2])
i = i+2
print b
c = numpy.hstack((a,b))
print c
をしかし、結果は奇妙だった:
array b:
[[ 0.33328455]
[ 0.66671545]
[ 1. ]
[ 1. ]]
array c:
[[ 1. 4. 4.555 0.33328455]
[ 2. 3. 9.112 0.66671545]
[ 3. 1. 7.322 1. ]
[ 1. 5. 3.911 1. ]]
配列cの1行目と2行目は私が望むものでしたが、残りの行は奇妙でした。私が期待した結果の配列は:
[[ 1. 4. 4.555 0.33328455]
[ 2. 3. 9.112 0.66671545]
[ 3. 1. 7.322 0.65182943]
[ 1. 5. 3.911 0.34817057]]
これを修正するには?そして、このタスクを実行するためのより効率的なコーディングがありますか?
だから何ですあなたの*予想*出力?あなたはループ*を持っていないことに注意してください。あなたは 'if'文しか持っていません。コードはそこで繰り返されません。おそらく 'while i <= 2:'ループを使うことを意味しましたか? –