¿Cuál es la diferencia entre los tipos y ?

¿Hay alguna diferencia entre los tipos y ?

numpy.string_ es el tipo de datos NumPy utilizado para las matrices que contienen cadenas de bytes de ancho fijo. Por otro lado, str es un tipo de Python nativo y no se puede utilizar como un tipo de datos para matrices NumPy *.

Si crea una matriz NumPy que contiene cadenas, la matriz usará el tipo numpy.string_ (o el tipo numpy.unicode_ en Python 3). Más precisamente, la matriz utilizará un sub-tipo de datos de np.string_ :

 >>> a = np.array(['abc', 'xy']) >>> a array(['abc', 'xy'], dtype='>> np.issubdtype(' 

En este caso, el tipo de datos es ' : el < denota el orden de bytes (little-endian), S indica el tipo de cadena y 3 indica que cada valor de la matriz contiene hasta tres caracteres (o bytes).

Una propiedad que np.string_ y str share es la inmutabilidad. Intentar boost la longitud de un objeto str Python creará un nuevo objeto en la memoria. De manera similar, si desea que la matriz NumPy de ancho fijo tenga más caracteres, tendrá que crearse una nueva matriz más grande en la memoria.


* Tenga en cuenta que es posible crear una matriz de object NumPy que contenga referencias a objetos str Python, pero dichas matrices se comportan de manera muy diferente a las matrices normales.