17:46
~補足~PythonライブラリNumpyについて
みなさんこんにちは。テック博士です。
前回までは助手くんがPythonライブラリの使用方法について
いろいろと説明してくれましたね。
今回も本当はその続きを書いてもらう予定だったのですが、
急に忙しくなってしまったので、今日は代わりに私が、
PythonライブラリのNumpyについて前回の説明に
少し補足をしておきたいと思います。
前回助手君が主に説明してくれたのはブロードキャスティング
という手法でしたね。
今回は機械学習プログラムのコーディングの際によく使用する、
行列の生成や分割、保存といった基本的な操作について、
コードをお見せしながらお話していこうかと思います。
① 行列の生成
import numpy as np # ゼロ配列 a = np.zeros(shape) # 連続した整数の配列 b = np.arange(start, stop).reshape(shape) # 一様分布(乱数) c = np.random.uniform(low, high, shape) # 正規分布(乱数) d = np.random.normal(ave, stddev, num) """ shape:配列の形 start:開始値 stop:終了値+1 low:下限値 high:上限値 ave:平均値 stddev:標準偏差 num:要素数 """
例えばゼロ配列は、クラス分類の教師データがクラス番号で
与えられている時に、クラス数分の要素数を持つゼロベクトル
を生成し、クラス番号目の要素のみを1にするなどの使い方
をしたりします。
正規分布は重みの初期値などの設定時などです。
ちなみにshapeは多次元配列(行列はもちろん3次元以上でも)
でもOKです。
② 行列操作(分割と結合)
# 行で分割 e = np.vsplit(array, [row1, row2,...]) # 列で分割 f = np.hsplit(array, [col1, col2,...]) # 横に結合 g = np.hstack([array1, array2]) # 縦に結合 h = np.vstack([array1, array2]) """ row1,row2,...:分割する際の下の行 col1,col2,...:分割する際の右の列 array1,array2:処理を行う対象の配列 """
行列の基本的な結合、分割操作です。
機械学習でトレーニングデータとテストデータ、入力データと
教師データなどを分離するときに便利です。
教師データなどを分離するときに便利です。
このほかに特定の行や列のみを取り出すスライスなどもあります。
③保存とロード
機械学習の際に途中の結果を保存したり、前回保存した結果を
読みだして学習の続きを行いたいときなどがありますよね。
その時に便利なのがこの保存と読み込みです。
保存した結果の数値を見て確認したいときにsavetxtを使用すると
良いでしょう。ただし、3次元以上の配列には対応していないので、
その際には通常のsaveを使用してください。
他にもNumpyにはさまざまな処理が存在するので、
是非いろいろと調べて使用してみてください。
それでは、今回はここまでにしましょう。
お疲れ様でした!
# npyファイルとして保存 np.save(array, filepath) # npyファイルをロードし、変数iに格納 i = np.load(filepath) # テキストファイルとして保存 np.savatxt(filepath, delimiter=delimiter) # テキストファイルをロードし、変数jに格納 j = np.loadtxt(filepath, delimiter=delimiter) """ filepath:保存するファイルのパス。 saveの場合には拡張子をnpy、savetxtの場合は何でも大丈夫ですが、 delimiterに合わせて決めると良いです。 たとえばdelimiter=','であればcsvなど delimiter:区切り文字 """
機械学習の際に途中の結果を保存したり、前回保存した結果を
読みだして学習の続きを行いたいときなどがありますよね。
その時に便利なのがこの保存と読み込みです。
保存した結果の数値を見て確認したいときにsavetxtを使用すると
良いでしょう。ただし、3次元以上の配列には対応していないので、
その際には通常のsaveを使用してください。
他にもNumpyにはさまざまな処理が存在するので、
是非いろいろと調べて使用してみてください。
それでは、今回はここまでにしましょう。
お疲れ様でした!