5

構造化/リキャリーを構築するときの型変換の動作に混乱しています:

この単純な例では、数値フィールドを使用しますが、型を文字列として定義しています。

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)

string を生成します'1.0'。この動作の原因は何ですか?

4

1 に答える 1

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 バイトであることを意味します。これはもちろん、float の文字列表現を保持するには小さすぎます。

于 2016-01-06T06:23:11.487 に答える