覚えておくとたまに便利になる機能がいくつかあります。
まず、tostringです。
動作確認しつつまとめてみます。
数値を文字列に変換するわけではありません。
どういうときに使用するかというと、場合それぞれですが、
たとえば、シリアル通信やTCP/IP通信などで文字列として受け取ったデータを、数値として扱いたい場合などに使えます。
最近では、画像データの変換として使いました。
例を挙げます。
import numpyとするとxの中身は
x = numpy.arange(-3,3)
array([-3, -2, -1, 0, 1, 2])となります。
そこで、x
s = x.tostring()とすると、sの中身は
'\xfd\xff\xff\xff\xfe\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00'となり、16進のバイナリパターンが文字列として出力されています。
つまり、arangeで作成した段階で、4[byte](32bit)のint型として扱われ、リトルエンディアン方式で保管されているようです。
これを文字列として保存して、arrayとして戻すためには、
numpy.frombuffer( s, dtype=int )とします。結果は、
array([-3, -2, -1, 0, 1, 2])となります。
浮動小数点の場合はdtypeをfloatに指定します。
その他、32bitや64bit、または整数型か浮動小数点型か、符号有無などの細かい設定が必要な場合は、numpyの下に定義されている型を利用します。
たとえば
符号無整数
numpy.uint8
numpy.uint16
numpy.uint32
numpy.uint64
符号付整数
numpy.int8
numpy.int16
numpy.int32
numpy.int64
浮動小数点
numpy.float16
numpy.float32
...
複素数
numpy.complex
numpy.complex64
...
などです。
ちなみに、数値データをそれぞれ文字列に変換する場合は、いくつか方法がありますが、
a.astype( str )とすればできます。
listとして出力するなら
map( str, a )としてもよいかもしれません。
今度、それぞれの方法について処理時間などの比較をしてみます。
例で使用したnumpyは1.8.1 (python 2.6)を使用しています。
0 件のコメント:
コメントを投稿