numpy中输入str的默认dtype是什么?

时间:2017-09-05 09:49:41

标签: python string numpy numpy-dtype

我只是想在创建unicode时确认字符串的默认数据类型是否为ndarray。我找不到任何清楚说明这一点的参考文献。可能是太明显了,也不需要陈述。

指定dtype时:

>>> import numpy as np
>>> g = np.array([['a', 'b'],['c', 'd']], dtype='S')
>>> g
array([[b'a', b'b'],
       [b'c', b'd']], 
      dtype='|S1')

不指定dtype:

>>> g = np.array([['a', 'b'],['c', 'd']])
>>> g
array([['a', 'b'],
       ['c', 'd']], 
      dtype='<U1')

此外,文字b表示何时指定dtype。根据文档,它表示bool,这似乎不是这种情况。

有人可以澄清一下吗?

1 个答案:

答案 0 :(得分:4)

b'...'表示它是一个字节字符串,字符串数组的默认dtype取决于字符串的类型。 Unicodes(python 3字符串是unicode)是U而Python 2 str或Python 3 bytes具有dtype S。您可以在NumPy documentation here

中找到dtypes的说明
  

阵列协议类型字符串

     

第一个字符指定数据类型,其余字符指定每个项目的字节数,Unicode除外,它被解释为字符数。项目大小必须与现有类型相对应,否则将引发错误。支持的种类是:

     
      
  • '?'布尔
  •   
  • 'b'(签名)字节
  •   
  • 'B'无符号字节
  •   
  • 'i'(签名)整数
  •   
  • 'u'无符号整数
  •   
  • 'f'浮点
  •   
  • 'c'复杂浮点
  •   
  • 'm'timedelta
  •   
  • 'M'datetime
  •   
  • 'O'(Python)对象
  •   
  • 'S','a'以零结尾的字节(不推荐)
  •   
  • 'U'Unicode字符串
  •   
  • 'V'原始数据(无效)
  •   

然而,在您的第一种情况下,您确实强制 NumPy将其转换为字节,因为您指定了dtype='S'