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

Ish*_*arg 4 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')
Run Code Online (Sandbox Code Playgroud)

不指定dtype:

>>> g = np.array([['a', 'b'],['c', 'd']])
>>> g
array([['a', 'b'],
       ['c', 'd']], 
      dtype='<U1')
Run Code Online (Sandbox Code Playgroud)

同样,b当指定dtype时,文字表示什么。根据文档,它表明bool这里似乎不是这种情况。

可以请一个人澄清一下吗?

MSe*_*ert 5

b'...'表示它是一个字节字符串,字符串数组的默认dtype取决于字符串的类型。Unicode(Python 3字符串是unicode)是,U而Python 2 str或Python 3 bytes具有dtype S。您可以在此处NumPy文档中找到dtypes的说明

数组协议类型的字符串

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

  • '?' 布尔值
  • 'b'(有符号)字节
  • 'B'无符号字节
  • 'i'(有符号)整数
  • 'u'无符号整数
  • 'f'浮点数
  • “ c”复杂浮点
  • 'm'timedelta
  • “ M”日期时间
  • 'O'(Python)对象
  • 'S','a'零终止字节(不建议)
  • 'U'Unicode字符串
  • “ V”原始数据(无效)

然而,在你的第一个情况下,你实际上是被迫 NumPy的,因为你指定将其转换为字节dtype='S'

  • @Isha,不要混淆`b` dtype(有符号字节)和`b'...'`(字节串)。一个是`numpy`,另一个是py3。字节串数据类型是“|S1”。 (2认同)