我只是想在创建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
,这似乎不是这种情况。
有人可以澄清一下吗?
答案 0 :(得分:4)
b'...'
表示它是一个字节字符串,字符串数组的默认dtype取决于字符串的类型。 Unicodes(python 3字符串是unicode)是U
而Python 2 str
或Python 3 bytes
具有dtype S
。您可以在NumPy documentation here
阵列协议类型字符串
第一个字符指定数据类型,其余字符指定每个项目的字节数,Unicode除外,它被解释为字符数。项目大小必须与现有类型相对应,否则将引发错误。支持的种类是:
- '?'布尔
- 'b'(签名)字节
- 'B'无符号字节
- 'i'(签名)整数
- 'u'无符号整数
- 'f'浮点
- 'c'复杂浮点
- 'm'timedelta
- 'M'datetime
- 'O'(Python)对象
- 'S','a'以零结尾的字节(不推荐)
- 'U'Unicode字符串
- 'V'原始数据(无效)
然而,在您的第一种情况下,您确实强制 NumPy将其转换为字节,因为您指定了dtype='S'
。