<type'numpy.string _'=“”>和<type'str'=“”>之间有什么区别?

时间:2015-05-06 20:30:29

标签: python string numpy types

类型<type 'numpy.string_'><type 'str'>之间是否存在差异?

1 个答案:

答案 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对象,但此类数组的行为与普通数组完全不同。