Python中dtypes中S1和S2的区别

21

我有两个字符串数组:

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之间有什么区别?它们只是保存不同长度的条目吗?

如果我的数组包含不同长度的字符串,会怎样?

我在哪里可以找到所有可能的数据类型及其含义列表?

2个回答

32

请查看dtypes文档

|S1|S2是数据类型描述符;前者表示数组保存长度为1的字符串,后者表示长度为2的字符串。竖线|字节序标志;在这种情况下不需要字节序标志,因此设置为|,表示不适用。


我觉得这很眼熟 - https://dev59.com/1mYr5IYBdhLWcg3wDF_P - Jon Clements
谢谢!如果我的数组中的字符串长度不同,会发生什么?有这方面的特殊类型吗? - Amelio Vazquez-Reina
2
@user273158:数组只能包含固定长度的项;变长字符串不受支持,至少不是作为 S。但你可以存储对象引用(dtype('O')),其中对象可以是 Python 字符串。 - Martijn Pieters

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]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接