类型<type 'numpy.string_'>
和<type 'str'>
之间是否存在差异?
答案 0 :(得分:13)
numpy.string_
是用于包含固定宽度字节字符串的数组的NumPy数据类型。另一方面,str
是本机Python类型,不能用作NumPy数组的数据类型*。
如果创建包含字符串的NumPy数组,则该数组将使用numpy.string_
类型(或Python 3中的numpy.unicode_
类型)。更确切地说,数组将使用子数据类型np.string_
:
>>> a = np.array(['abc', 'xy'])
>>> a
array(['abc', 'xy'], dtype='<S3')
>>> np.issubdtype('<S3', np.string_)
True
在这种情况下,数据类型为'<S3'
:<
表示字节顺序(little-endian),S
表示字符串类型,3
表示每个数组中的值最多包含三个字符(或字节)。
np.string_
和str
共享的一个属性是不可变性。尝试增加Python str
对象的长度将在内存中创建一个新对象。同样,如果您希望固定宽度的NumPy数组包含更多字符,则必须在内存中创建一个新的更大的数组。
*请注意,可以创建一个NumPy object
数组,其中包含引用到Python str
对象,但此类数组的行为与普通数组完全不同。