とまと

今回は機械学習でよく使うarray 型などの行列形式を普通のリスト型に変更するtolistについて書きたいと思います!!

筆者について(about me)

私は普段、理系大学生をしており、物理を専攻しております。その中で大学2年生のときに python に触れ、その面白さに魅了されました。その後は主に python を使った deep learning を趣味として始め、様々な開発を行っております。その際にでたエラーなどの解決方法をこの What’s this ブログで詳しく解説しています。

tolist とは

tolistとはarray型など、行列形式で表される型をリストに変換する関数のことです。簡単に例を見てみましょう。

例(example)

import numpy as np

a = np.arange(3)
print(a)

# output
[0 1 2]

というようなコードを書くと1行、3列の行列形式に数字が格納されます。これをリストに変換して、値を参照しやすくするためにtolistを使います。コードは以下の通りです。

b = a.tolist()
print(b)

# output
[0, 1, 2]

たったこの1行だけで行列形式をリストに変更することができました!ほんとにプログラミングで便利ですよね。

心の声

(習得するまでがむずかしいよね)

ここでは1次元でしたが、2次元でも3次元でも使うことができます。早速例をみましょう!

a = np.arange(8).reshape(2,4)
print(a)

# output
[[0 1 2 3]
 [4 5 6 7]]

a = np.arange(8).reshape(2,2,2)
print(a)

# output
[[[0 1]
  [2 3]]

 [[4 5]
  [6 7]]]

このように2次元、3次元の形式もtolistを使えば…

b = a.tolist()
print(b)

# output
[[0, 1, 2, 3], [4, 5, 6, 7]]

# output
[[[0, 1], [2, 3]], [[4, 5], [6, 7]]]

このようにどんな形式でも1行でリストに変換できます!

これの利点としては、機械学習ではバッチ学習といって、学習をいくつかの塊を作って、その塊ごとに学習方法では3次元形式を扱うことが多いですが、それでも簡単にリストに変更できてしまうので、とても便利な関数ですよね!

参考文献

https://note.nkmk.me/python-numpy-list/