練習用のPythonコードサンプルその1
このページについて
ここには、練習用のPythonコードのサンプルを置いています
Pythonでの機械学習のプログラミングをする際に知っておくとよい内容です
Google Colabのセルに、同じように入力して、Shift + EnterまたはCtrl + Enter(Macの場合はCommand + Enter)を押すと、コードが実行され、結果が表示されます
自分の現在のスキルにあわせて、必要な部分を学習しましょう
学び方のコツ
コードはコピペしても構いませんが、できれば最初は自分で文字を打ち込んでみましょう
コードを実行したら、「少し数値を変えてみる」のように、アレンジして結果がどう変わるかを確認すると理解が深まります
このページの内容
このページは以下の内容についてのごく基本的な説明をしています。
(1) 四則演算
(2) 変数
(3) 型
(4) print文
(5) list(リスト、配列変数)
(6) if文
(7) for文
本ページで扱うのはかなり基本的なことのみです。もう少し詳しく学びたい場合は、たとえば別サイトの以下のページなど、いろいろなPython学習のサイトを見るなどして自主的に学習してください。
(1)~(4)の内容
(5)の内容
(6)の内容
(7) の内容
hr.icon
(1) 四則演算
四則演算の利用
Google Colab(Jupyter notebookでも同様)のセルに以下の文字列をそのまま打ち込んで実行する
1 + 2
「1 + 2」が計算され、結果が表示される
四則演算のための演算子
四則演算は+, -, *, /を使う(加算、減算、乗算、除算)
以下のコードを実行してみよう
(1 + 2 * 3 - 4) / 5
計算順序は、半角のカッコ()で指定できる
累乗は**を使う(以下は2の8乗)
2**8
hr.icon
(2) 変数
変数を利用した計算
英数字を使って変数を用いることができる
変数には数値や文字列等を格納でき、変数を使って計算ができる
以下のコードは、変数xと変数yにそれぞれ計算結果を入れたのち、xとyを計算している
最終行の結果が表示される(この場合はx + yの中身が表示)
code:変数を利用した計算
x = 1
y = 1 / 3
x + y
変数名の表記
変数名は複数の文字による文字列でも表せる
アルファベット、数字、アンダースコア(_)が利用可能
アルファベットの大文字小文字は区別される
はじめの文字には数字は使えない
code:変数名の表記
Data_1 = 1 / 5
Data_2 = 3 / 5
Data_1 + Data_2
hr.icon
(3) 型
型の種類
Pythonでは整数、実数、文字列など、さまざまな種類のデータを扱うことができ、これらの種類を型と呼ぶ
変数の型を意識することはプログラムを書く上で重要
table:変数の型
型 例 型の意味
int型 a = 1 整数
float型 a = 1.5 実数
str型 a = "leraning", b = "abc" 文字列
bool型 a = True, b = False 真偽
list型 a = [1, 2, 3] 配列
ndarray型 a = np.array([1, 2, 3]) 行列
型の調査
typeによって型を調べることができるty
type(100)
この場合はintが表示されるはず(「100」はint型)
type(100.1)
これはfloat型になるはず
int型のデータを変数に入れると自動的にその変数もint型になる、というように、変数に代入する値によって変数の型も決まる
以下2つの違いを試してみよう(それぞれ、xの型を調べている)
code:変数の型1
x = 100
type(x)
code:変数の型2
x = 100.1
type(x)
文字列
文字列にはstr型が使われる
\`(シングルクォーテーション)や"(ダブルクォーテーション)で囲むと文字列として認識される
code:文字列の型
x = 'learning'
type(x)
hr.icon
(4)print文
print文の利用
Google ColabやJupyter notebookでは、変数名を書いて実行すれば内容を表示できるが、セル内の最後の行でないと表示されない
以下はyの内容しか表示されない
code:変数名だけ書いても表示できるが、セル内の最後の行しか表示されない
x = 1 / 3
x
y = 2 / 3
y
printを使うと、途中の行でも表示できる
code:printを使えば途中の行でも表示できる
x = 1 / 3
print(x)
y = 2 / 3
print(y)
文字列と組み合わせた数値の表示
文字列と数値を組み合わせて表示したい場合は、たとえば以下のようにする
ここでは、strを用いることで、xをfloat型からstr型(文字列)に変換している
str型の文字列同士は、+演算子で連結できる
print('x = ' + str(x))
formatを用いることでも文字列との組み合わせができる
以下のように、「文字列.format(x)」とし、文字列の中に{0}があれば、文字列の中の{0}をxに置き換えるという意味になる
print('weight = {0} kg'.format(x))
複数の変数を表示するには、文字列中で{0}、{1}、{2}というように通し番号で指定していく
code:複数の変数を表示する場合
x = 1 / 3
y = 1 / 7
z = 1 / 4
print('weight: {0} kg, {1} kg, {2} kg'.format(x, y, z))
実数(float型変数)を表示するとき、{通し番号:.nf}とすると、小数点n桁までの表示になる
print('weight: x={0:.2f} kg, y={1:.2f} kg, z={2:.2f} kg'.format(x,y,z))
hr.icon
(5) list(リスト、配列変数)
listの利用
複数のデータを1つのまとまりとして扱う配列を利用するときにはlist(リスト)型を使う
listは[]を使って表す
以下は、5つの要素をもつlistであるxを定義し、その内容を表示する
ちなみに半角の#はコメント文の開始を意味する(#以降は(人間のための)コメントとして扱われ、実行されない)
code:listの利用
print(x) # 表示
各要素はx[インデックス]で見ることができる
listのインデックス(要素番号)は0から始まる
インデックス0の要素(1番目の要素)を見るには
x[0]
インデックス2の要素(3番目の要素)を見るには
x[2]
以下のように型を調べてみると、xはlist型になり、要素であるx[0]はint型になる
print(type(x))
print(type(x[0]))
異なる型を1つのリストの中に混在させることもできる
s = ['SUN' ,1 ,'MON' ,2]
これも型を確認してみよう
print(type(s[0]))
print(type(s[1]))
listの要素の書き換えは、x[インデックス] = 書き換える値で行う
code:listの要素の書き換え
print(x)
listの長さ(要素の数)はlenで取得できる
code:listの長さ
len(x)
2次元の配列
listの中にlistを入れ込むことで、2次元の配列も作れる
code:2次元配列
a = 1, 2, 3], [4, 5, 6
print(a)
要素の参照は、変数名[i][j]のようにすればよい
code:要素の参照
a = 1, 2, 3], [4, 5, 6
同様に入れ子にしていけば、3次元配列、4次元配列なども作れる
連続した整数の配列の作成
5~9、といったように、連続した整数の配列を作るには、range(はじめの数, 終わりの数+1)とすればよい
code:連続した整数の配列の作成
y = range(5, 10)
print(y0, y1, y2, y3, y4) こうしてrangeで作られた配列は、list型ではなくrange型という型になる
型を確認してみよう
type(y)
yを表示してみると、[5, 6, 7, 8, 9]というようにはならず、range(5, 10)となる
print(y)
range型はlist型と同様に要素を参照できるが、書き換えることはできない
list型に変換することもできる
code:range型をlist型に変換
z = list(range(5, 10))
print(z)
rangeのはじめの数を省略すると、0始まりのrange型配列が作れる
list(range(10))
この場合はさらにlistに変化しているので、0~9の値が入ったリストが作られる
hr.icon
(6) if文
プログラムの制御構造のひとつに条件分岐があり、最も典型的なものがifによる条件分岐
以下のコードでは、最初のif x > 10:のブロックで、「x > 10」の場合に行う処理を書いている
(A1)および(A2)としている行は、if x > 10:から半角4文字分ずれている
このずれを「インデント(字下げ)」とよぶ
Pythonでは、if文(や、このあとのfor文など)のような制御構造において、まとまりのあるブロックを記述するときには、このように同じ幅のインデントを入れることによって、そこがブロックであることを示す
インデント幅が異なるなど、正しくインデントできていないときはうまく動かないので注意
「x > 10」でない場合(つまり x <= 10 の場合)は、elseのブロックにある処理が動く
この例では(B1)の行が実行される
code:if文の例
x = 11
if x > 10:
print('x is ') # ... (A1)
print(' larger than 10.') # ... (A2)
else:
print('x is smaller than 11') # ... (B1)
なお、x > 10という演算の結果はbool型となり、TrueかFalseかのいずれかの値をとる
以下のコードを実行すると、xが10より大きければ(真であれば)True、そうでなければ(偽であれば)Falseが表示される
x > 10
型も確認してみよう
type(x > 10)
要するに、ifのあとの条件式の結果がTrueであればifのブロックが、Falseであればelseのブロックが実行されることになる
比較演算子
>のような演算子を比較演算子とよぶ
table:比較演算子
比較演算子 内容
a == b aとbが等しい
a > b aがbより大きい
a >= b aがb以上
a < b aがbより小さい
a <= b aがb以下
a != b aとbは異なる
複数の条件式を組み合わせたい場合は、and(かつ)やor(または)を使う
以下は、10 <= xとx <= 20を同時に満たすときの処理を書くコードとなる
code:比較演算子
x = 15
if 10 <= x and x <= 20:
print('x is between 10 and 20.')
hr.icon
(7) for文
for文の利用
あるかたまりの処理を繰り返す場合には、繰り返しの制御構造を用いる
典型的なものがfor文
for 変数 in list型:という形で書くのが基本
listの要素数だけforのブロック(インデントされたブロック)の行が実行される
繰り返すたびに、list内の要素が順番に変数に入る
以下のコードは、list内の要素をそのままprintで表示する
listの代わりにrange型を用いてもよい(以下であればfor i in range(1, 3):としてもよい)
code:for文の利用
print(i)
たとえばlist内の全要素を順次2倍していく、であれば以下のように書ける
code:for文でlistの全要素を操作
for i in range(len(num)):
print(num)