Python中S1和S2的dtypes区别

21 投票
2 回答
28239 浏览
提问于 2025-04-17 15: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之间有什么区别?只是它们包含的内容长度不同吗?

如果我的数组里面有不同长度的字符串,那会怎么样?

我在哪里可以找到所有可能的数据类型(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的字符串。|这个符号是字节顺序标志;在这种情况下,不需要字节顺序标志,所以它被设置为|,意思是不适用。

撰写回答