私はしばらくコーディングしていなかったので、Pythonに戻ろうとはしていませんでした。私は、各配列要素の値を合計に追加することで配列を合計する簡単なプログラムを作成しようとしています。これは私が持っているものです:
def sumAnArray(ar):
theSum = 0
for i in ar:
theSum = theSum + ar[i]
print(theSum)
return theSum
次のエラーが表示されます。
line 13, theSum = theSum + ar[i]
IndexError: list index out of range
私がやろうとしていることは、明らかにこれと同じくらい簡単であることがわかりました:
sum(ar)
しかし、明らかに配列を適切に反復処理していないことは明らかであり、他の目的のために適切に学習する必要があると考えています。ありがとう!
Forループは、インデックスではなく、配列の要素を繰り返し処理します。リストar = [2、4、6]があるとします:
for i in ar:
で繰り返し処理すると、iの値は2、4、6になります。したがって、最初の値でar[i]
にアクセスしようとすると、(最後の位置としてlistは2、a [2]は6)ですが、a [4]は存在しないため、後者の値はそうではありません。
とにかくインデックスを使用する場合は、for index, value in enumerate(ar):
を使用してみてください。そうすれば、theSum = theSum + ar[index]
は問題なく動作するはずです。
このメソッドを使用してリストまたは配列を反復処理する場合:
ar = [10, 11, 12]
for i in ar:
theSum = theSum + ar[i]
i
変数でリストまたは配列の値を順番に取得しています。変数i
をfor loop
内に印刷する場合。次の出力が得られます。
10
11
12
ただし、コードでは、i
変数と配列のインデックス値を混同しています。したがって、ar[i]
を実行すると、最初の反復ではar[10]
を意味します。もちろん、これはIndexError
をスローする範囲外のインデックスです
Editthis を読むと、Pythonで配列またはリストを反復処理するさまざまな方法をよりよく理解できます。
使用できます
nditer
ここで私は計算しません。ロジスティック回帰における正および負の係数の例:
b=sentiment_model.coef_
pos_coef=0
neg_coef=0
for i in np.nditer(b):
if i>0:
pos_coef=pos_coef+1
else:
neg_coef=neg_coef+1
print("no. of positive coefficients is : {}".format(pos_coef))
print("no. of negative coefficients is : {}".format(neg_coef))
出力:
no. of positive coefficients is : 85035
no. of negative coefficients is : 36199