2013-02-09 13 views
8

でS1とS2との違い私は、文字列の二つの配列があります。dtypes。 Pythonの

In [51]: r['Z'] 
Out[51]: 
array(['0', '0', '0', ..., '0', '0', '0'], 
     dtype='|S1') 

In [52]: r['Y']                             
Out[52]: 
array(['X0', 'X0', 'X0', ..., 'X0', 'X1', 'X1'], 
     dtype='|S2') 

をS1とS2の違いは何ですか?彼らは異なる長さのエントリを保持しているだけですか?

配列の文字列にの長さが異なる場合はどうなりますか

可能なすべてのdtypのリストとその意味はどこにありますか?

答えて

16

dtypes documentationを参照してください。

|S1および|S2文字列はデータ型記述子です。最初の配列は長さ1の文字列、長さ2の文字列を保持します。|パイプ記号はbyteorder flagです。この場合、必要なバイトオーダーフラグがないので、適用されないことを意味する|に設定されます。

+0

私は、これはベルを鳴らしたと思いました - http://stackoverflow.com/questions/13997087/what-are-the-available-datatypes-for-dtype-with-numpys-loadtxt-an- genfromtxt –

+0

ありがとう!配列に異なる長さの文字列があるとどうなりますか?それには特別なSタイプがありますか? –

+1

@ user273158:配列には固定長の項目を入れることしかできません。可変長文字列はサポートされていません。 –

1

の文字列を意味し、数値配列では、それらをPythonオブジェクトとして格納することができます。たとえば:

In [456]: x=np.array(('abagd','ds','asdfasdf'),dtype=np.object_) 

In [457]: x[0] 
Out[457]: 'abagd' 

In [459]: map(len,x) 
Out[459]: [5, 2, 8] 

In [460]: x[1]=='ds' 
Out[460]: True 

In [461]: x 
Out[461]: array([abagd, ds, asdfasdf], dtype=object) 

In [462]: str(x) 
Out[462]: '[abagd ds asdfasdf]' 

In [463]: x.tolist() 
Out[463]: ['abagd', 'ds', 'asdfasdf'] 

In [464]: map(type,x) 
Out[464]: [str, str, str] 
関連する問題