機械学習エンジニアを目指して①(Python入門)

自己紹介

人生初ブログとなります、Pochoです。
今はJavaのエンジニアとして働いていますが、機械学習エンジニアに興味を持ち現在勉強中です!
(そのうち機械学習の現場に入りたいなぁ・・)

Javaと同じことが出来たり、同じような構文などは省くこともありますが、(基本的には書いていく予定・・)
勉強して便利だなぁっと思った内容などを書いていきたいと思いますのでよろしくお願いします!
(指摘やこういう関数あるよ!こういうのも現場でよく使う!などあれば優しく教えてもらえると非常にうれしいです・・!)
それではさっそく!
※今回Python3を使用しています。

型について

・型変換

# int型からstr型に変換
val = 5
val = str(val)

#str型からval型に変換
val = '5'
val = int(val)

・型の確認

val = 'Pocho'
val_type = type(val) # str型

# 型の比較も出来る
val_type == str # True

val = 0.5
val_type = type(val) #float型
val_type == float # True

val_type = type(.5) # 0.5と解釈される(float型)
val_type == float # True

演算

普通にint型をint型で割るとfloat型になる。
少数以下切り捨て除算にしたければ、「//」を使用する。

# int / int はfloat型になる
val = 4 / 2 # val = 2.0
type(val) # float型になる

# 少数以下切り捨て除算
val = 4 // 2 # val = 2
type(val) #int型になる

・乗算

Pythonではstrとint型の乗算が可能!(使うかはわからないけど・・)

'Pocho' * 3 # 「PochoPochoPocho」になる

また、「**」とするところでN乗を計算することが出来る!

5 ** 2 # 5の2乗で「25」

文字列メソッド

・大文字小文字への変換

Javaでいうところの「toUpperCase()」「toLowerCase()」
書き方は以下の通り。

'PoCho'.lower() # 'pocho'
'PoCho'.upper() # 'POCHO'

formatの使い方

これもJavaのformatメソッドと同じ使い方。

name = 'Pocho'
'初めまして!私は{}です!'.format(name) # '初めまして!私はPochoです!'

浮動小数

比がその浮動小数点数の値となるような整数の組を返してくれる!

0.5.as_integer_ratio() # (1, 2)⇒1/2

でもなぜか、0.4だと・・

0.4.as_integer_ratio() # (3602879701896397, 9007199254740992)

なんていうとんでもない数字が・・
調べてみると、分母が2のN乗という条件のもとで近似を探していることが原因のようです。
参考:https://minus9d.hatenablog.com/entry/2017/11/30/225715
(3602879701896397 / 9007199254740992をすると0.4になりました。)

リスト

Javaのリストと同じですが、微妙に違う点があります。

val = [2, 6, 3, 9, 5, 4]
len(val) # リストのサイズ:6
val[0] # 2
val[-1] # リストの末尾にアクセス:4
val[-3] # リストの末尾から3番目:9

# スライス
val[0:2] # 先頭から2つの要素を選択:[2, 6]
# 先頭の0は省略出来る
val[:2] # [2, 6]

val[3:len(val)] # 3番目から末尾までの要素を選択:[9, 5, 4]
# 後ろのlen(val)は省略出来る
val[3:] # [9, 5, 4]

# 要素番号を指定しない場合はすべての要素を選択
val[:]:[2, 6, 3, 9, 5, 4]

・数値と文字の混合も可能

val = [2, 'P', 3, 'o', 5, 'c', 4, 'h', 'o']

・値の追加

val = [2, 6, 3, 9, 5, 4]
val.append(10) #  [2, 6, 3, 9, 5, 4, 10]

#多重リストの場合はこんな感じ
val = [[0, 1, 2], ['P', 'o', 'c', 'h']]
val[1].append('o')

・タプル

Javaにはありませんが、中の要素を変更できないリストのことをいいます。

# リストと違って()でくくる
val = (2, 6, 3, 9, 5, 4)

# 以下のコードを実行するとエラーになる
val[0] = 10

#--------------------------------------
# Traceback (most recent call last):
#   File "<stdin>", line 1, in <module>
# TypeError: 'tuple' object does not support item assignment
#--------------------------------------

※追加、変更、削除全てダメみたい

辞書

JavaでいうMapみたいなもの。

dic = {'Po': 0, 'ch': 1, 'o': 2}
dic['Po'] # キーに対しての値が取得できる(結果:0)

・キーの一覧を取得する

dic.keys() # 結果:dict_keys(['Po', 'ch', 'o'])

・値の一覧を取得する

dic.values() # 結果:dict_values([0, 1, 2])

・新しく要素を追加する

dic['Poccho'] = 3 # 結果: {'Po': 0, 'ch': 1, 'o': 2, 'Poccho': 3}


とりあえず今回はここまで!!
不慣れで読みづらかったと思いますが、最後まで読んでくれてありがとうございます!!
エンジニアの方のコメントお待ちしてますっ
次回は制御文についてを書いていきたいと思います!