2016-01-06 8 views
5

を構造化:のpythonは、構造化/ recarrayを構築するとき、私は型変換の行動によって混乱している/ recarray型変換の挙動

この単純な例では、数値フィールドにかかりますが、文字列としてタイプを定義しています。

data = [(1.0, 2), (3.0, 4)] 
np.array(data, dtype=[('x', str), ('y', int)]) 
生成

:だから値は、あなたが期待するものではありませんこれは空の文字列に変換した

array([('', 2), ('', 4)], dtype=[('x', 'S'), ('y', '<i8')]) 

をから:

str(1.0) 

これは、文字列'1.0'を生成します。この現象の原因は何ですか?

答えて

6

文字列の幅を指定する必要があります。 「A3」:

>>> np.array([(1.0, 2),(3.0,4)],dtype=[('x','a3'),('y',int)]) 
array([('1.0', 2), ('3.0', 4)], 
     dtype=[('x', 'S3'), ('y', '<i4')]) 

ちょうどstrを使用すると、効果的に0バイトの文字列フィールドを意味します - もちろんフロートの文字列表現を保持するには小さすぎます。

関連する問題