Python中S1和S2的dtypes区别
我有两个字符串数组:
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之间有什么区别?只是它们包含的内容长度不同吗?
如果我的数组里面有不同长度的字符串,那会怎么样?
我在哪里可以找到所有可能的数据类型(dtypes)及其含义的列表?
2 个回答
4
如果你想在numpy数组中存储长度不固定的字符串,可以把它们当作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]
32
可以查看dtypes
的文档。
|S1
和|S2
是数据类型的描述符;|S1
表示这个数组里存的是长度为1的字符串,|S2
表示长度为2的字符串。|
这个符号是字节顺序标志;在这种情况下,不需要字节顺序标志,所以它被设置为|
,意思是不适用。