superi

主にキャリアと金融を嗜むメディア

Numpyのdtypeを変更する


スポンサーリンク

Numpyではdtypeオプションを指定しなければ自動的に設定されます。しかし、ファイルを読み込むときに以下のように(例えばstring)でtypeを指定することもできます。

 

#read file
$data = np.loadtxt('score.txt', dtype=np.string0)
$data

array([['contemporary_writings', 'ancient_writings', 'math', 'chemi',
        'bio', 'physics', 'his', 'world_his', 'poli', 'eng'],
       ['2', '3', '4', '3', '3', '4', '3', '2', '3', '2'],
...
['1', '2', '1', '1', '1', '2', '1', '1', '1', '2']],
dtype='|S21'

 しかし、スライスするなどしてstringとして扱う必要がなくなり、数値として処理したいときがあります。

#slice
$data2 = data[1:,0:2]

上記では1行目のヘッダーに該当する行を除外したのでint型で扱いたいところです。そこで、astypeメソッドでdtypeを変更可能です。

$data3 = data2.astype(int)
$data3.dtype

dtype('int64')

ただし,astypeを呼んだところでその配列自体のデータ型は変わりません。そのためキャストされた新しい配列を利用する場合は,上記のようにastypeで返されるndarrarを別変数に格納する必要があります。

 

参考

numpy使い方_1_ndarrayの生成方法 - すこしふしぎ.