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这里似乎不是这种情况。
可以请一个人澄清一下吗?
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'。