【Python勉強中】for文の訓練


このエントリーをはてなブックマークに追加

ここからちょっと広告です。

広告は以上です。

for文って、どんな言語を習っても最初に学ぶものなんだけど、whileに比べて全然腑に落ちてないので、今回無理やり使って練習しました。

まずは以下のように、図とその図のRGBの値をグラフ表示してから、

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
tokyo_tower = Image.open("tokyo_tower.png")
tower_color = np.array(tokyo_tower)
hist_r, bins_r = np.histogram(tower_color[:, :, 0].flatten(), bins=256)
hist_g, bins_g = np.histogram(tower_color[:, :, 1].flatten(), bins=256)
hist_b, bins_b = np.histogram(tower_color[:, :, 2].flatten(), bins=256)
plt.figure(figsize=(10, 3))
plt.subplot(1, 2, 1)
plt.imshow(tokyo_tower)
plt.subplot(1,2,2)
plt.plot(hist_r, color="red")
plt.plot(hist_g, color="blue")
plt.plot(hist_b, color="blue")
Pythonnofor

繰り返し同じことが書いてあるところを、forに置き換え。

iとかjとかkとかに数字を入れて、それをシーケンスのオブジェクトの番号(言葉の使い方合ってる?)に代入したい。普通に書いて、ちゃんと番号として扱ってくれるのかどうかちと不安だったのですが、なんだかいい感じに処理してくれたみたいです。

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
tokyo_tower = Image.open("tokyo_tower.png")
tower_color = np.array(tokyo_tower)
rgb = [0] * 6
j = 0
for i in range(0, 5, 2):
    rgb[i], rgb[i+1] = np.histogram(tower_color[:, :, j].flatten(), bins=256)
    j += 1
plt.figure(figsize=(10, 3))
plt.subplot(1, 2, 1)
plt.imshow(tokyo_tower)
rgbcolor = ["red", "green", "blue"]
k = 0
plt.subplot(1,2,2)
for i in range(0, 5, 2):
    plt.plot(rgb[i], color=rgbcolor[k])
    k +=1
Pythonfor

whileみたいに+=1とかカウントアップしているのが、本当にこのやり方クールなのかわからないぞ? とか、元よりむしろ長くなってる! とか、いろいろ思うところはありますが、今日のところはいいかな。週末のお勉強としてはまずまずではないでしょうか。

p.s.
thx!
https://qiita.com/gaku8/items/90167693f142ebb55a7d
https://udemy.benesse.co.jp/development/web/python-for.html
そしていつもの「Tellus×TechAcademy初心者向け Tellus 学習コース

Ads by Google

コメント

コメントは、Twitterやはてブに、以下のボタンから本記事のアドレスつきでツイート/ブクマしていただくと、上にあるzenbackのウィジェットに反映されます。
  このエントリーをはてなブックマークに追加
または同ウィジェット内のFacebookコメントでお願いしますー。

Facebookのシェアは……されても誰だかわからないのですが、シェア自体は嬉しいので、下にボタンを置かせていただきます。よろしくお願いします。