Skip to content

多次元リストの要素の型を一括変換

1次元リストの型変換

1次元のリスト a = [1.0, 2.0, 3.0, 4.0, 5.0]をすべてint型に変換する場合はmap関数を使う.
>>> a = [1.0, 2.0, 3.0, 4.0, 5.0]
>>> b = list(map(int,a))
>>> b
[1, 2, 3, 4, 5]

多次元リストの型変換

多次元リスト内の要素をすべて一括で型変換する場合に,1次元のときと同じようにmap関数を用いるのエラーが出る.
>>> a = [[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]]
>>> b = list(map(int,a))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'
このようなときには,numpy.vectorizeメソッドを使用する.このメソッドは指定した関数をすべての要素に反映させるというもの. 例えば,すべての要素をintに変換したい場合には,関数としてintを指定する.
import numpy as np

a = [[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]]
f = np.vectorize(int) #関数としてintを指定
b = f(a)

#当然このようにも書ける
b = np.vectorize(int)(a)
>>> b
array([[1, 2],
       [3, 4],
       [5, 6]])
今回は関数としてintを使用したが,もちろん自分で作成した関数を指定することもできる.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です