1 0 0 0 1
0 0 0 0 1
0 1 1 1 0
こんな画像(値はRGBのいずれかの値)があったとして、
この値をlistに格納後、
一行ずつ、重みづけて和を取っていきたいのですが、方法が分かりません。
どう重みづけるかというと、具体的に、
左から右にいくにつれて0から1ずつ増えていく値を、listの各要素の値に掛け合わせた和を取りたいのですが(行が変わるとまた0に戻る)、
forを2つ使う必要があるのですが、printの中にforを入れる必要があると気づきました、しかしその方法が分かりません。
現時点では、
python
1for num in range(3): 2 print(num * img_pixels[190 * num] + (num + 1)) * img_pixels[190 * num + 1] + (num + 2)) * img_pixels[190 * num + 2])
ここまでが関の山ですが、これだと問題点が2つあり、
まず、
1.行が変わっても0に戻らない(ずっと掛け合わせる数が1ずつ増え続けてしまう)
2.各行について、左から3つの数の和しか取れていない(各行100個以上あるので、+?等と指定しているとかなり長くなってしまう、for numb等として別の数numbを用意し、num+numb等としてみたが、上手くいかない。
どうすれば良いでしょうか。
具体的には、
a = np.array([[1,0,0,0,1,・・・],
[0,0,0,0,1,・・・],
[0,1,1,1,0,・・・]
[・・・]])
に対して
[10+01+02+03+14+・・・,00+01+02+03+14+・・・,00+11+12+13+0*4+・・・,・・・]
を求めたい。
という事で、numpyのarrangeを使う方法を教えて頂きました。
numpyを使わずに入れ子for等を使ってする方法等もあるのでしょうか?
また、可能であれば掛け合わせる数字を規則的に変化させていく方法も知りたい(今は0から1ずつ増えているが、2ずつ増やしたり、指数分増やしたり、等)
回答1件
あなたの回答
tips
プレビュー