Numpyのdtypeを変更する
Numpyではdtypeオプションを指定しなければ自動的に設定されます。しかし、ファイルを読み込むときに以下のように(例えばstring)でtypeを指定することもできます。
#read file
$data = np.loadtxt('score.txt', dtype=np.string0)
$dataarray([['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.dtypedtype('int64')
ただし,astypeを呼んだところでその配列自体のデータ型は変わりません。そのためキャストされた新しい配列を利用する場合は,上記のようにastypeで返されるndarrarを別変数に格納する必要があります。
参考
numpy使い方_1_ndarrayの生成方法 - すこしふしぎ.