usar tutorial que español curso aprender python numpy indexing cython unsigned-integer

tutorial - python numpy



Cython:(Por qué/Cuándo) ¿Es preferible usar Py_ssize_t para indexar? (2)

Py_ssize_t es un typedef usado internamente en la implementación de CPython (la implementación C de Python - no estoy hablando de Cython, estoy hablando de CPython). Se usa en todas partes. Las funciones API de Python C aceptan o devuelven un entero de nivel C que se puede usar para indexar secuencias de Python. Es por eso que es el tipo "correcto" para usar en un índice.

Py_ssize_t a su vez resuelve lo que sea que la ortografía de la plataforma sea para la variante firmada del tipo sin signo size_t de la plataforma C. Por lo tanto, se trata de un tipo de entero con signo, pero su ancho (número de bits) depende de la plataforma que esté utilizando.

Esta es una continuación de esta pregunta .

(Por qué / Cuándo) ¿Es preferible usar Py_ssize_t para indexar? En los docs que acabo de encontrar

# Purists could use "Py_ssize_t" which is the proper Python type for # array indices.

-> ¿ Py_ssize_t significa siempre que al indexar NumPy / Cython - array (s) / - views debería usarse Py_ssize_t ?

-> Es Py_ssize_t por ejemplo, un unsigned int por lo que no puedo usar @cython.boundscheck(False)


Py_ssize_t está firmado. Vea PEP 353 , donde dice "Se ha introducido un nuevo tipo Py_ssize_t, que tiene el mismo tamaño que el tipo size_t del compilador, pero está firmado. Será un tipodef para ssize_t donde esté disponible".

Debería usar Py_ssize_t para indexar. No encontré una declaración definitiva de esto en los documentos de Cython, pero Stefan Behnel, un desarrollador de Cython, lo dijo en un correo electrónico ( https://groups.google.com/forum/#!topic/cython-users/brENF_M9zxM ):

Como observación general, estás usando ints como índices. Debería usar el tipo Py_ssize_t en su lugar (o size_t, si prefiere un tipo sin firmar) para acomodarse correctamente para las arquitecturas de 64 bits.