¿Cuál es la diferencia entre ndarray
y array
en Numpy? ¿Y dónde puedo encontrar las implementaciones en el código fuente numpy?
242
¿Cuál es la diferencia entre ndarray
y array
en Numpy? ¿Y dónde puedo encontrar las implementaciones en el código fuente numpy?
numpy.array
es solo una función conveniente para crear un ndarray
; No es una clase en sí misma.
También puede crear una matriz usando numpy.ndarray
, pero no es la forma recomendada. De la cadena de documentación de numpy.ndarray
:
Las matrices deben construirse usando
array
,zeros
oempty
... Los parámetros dados aquí se refieren a un método de bajo nivel (ndarray(...)
) para crear instancias de una matriz.
La mayor parte de la carne de la implementación está en el código C, aquí en multiarray , pero puede comenzar a mirar las interfaces ndarray aquí:
https://github.com/numpy/numpy/blob/master/numpy/core/numeric.py
np.array
no es una clase, como a menudo hago.x = np.array([1,2.1,3])
if isinstance(x,np.array): # will give you a TypeError
array_getarray
es la implementación denumpy.ndarray.__array__
.numpy.array
comienza en_array_fromobject
, al menos en la implementación actual.numpy.array
es una función que devuelve anumpy.ndarray
. No hay ningún tipo de objeto numpy.array.fuente
Solo unas pocas líneas de código de ejemplo para mostrar la diferencia entre numpy.array y numpy.ndarray
Paso de calentamiento: construir una lista
Comprueba el tipo
Conseguirás
Construya una matriz (de una lista) usando np.array
O bien, puede omitir el paso de calentamiento, directamente tener
Comprueba el tipo
Conseguirás
que te dice que el tipo de matriz numpy es numpy.ndarray
También puede verificar el tipo por
y obtendrás
Cualquiera de las dos líneas siguientes le dará un mensaje de error
fuente
numpy.ndarray()
es una clase, mientras quenumpy.array()
es un método / función para crearndarray
.En numpy docs, si desea crear una matriz a partir de la
ndarray
clase, puede hacerlo de 2 maneras como se cita:1- usando
array()
,zeros()
oempty()
métodos: Las matrices deben construirse usando una matriz, ceros o vacíos (consulte la sección Vea también a continuación). Los parámetros dados aquí se refieren a un método de bajo nivel (ndarray(…)
) para crear instancias de una matriz.2- de la
ndarray
clase directamente: hay dos modos de crear una matriz usando__new__
: Si el búfer es Ninguno, entonces solo se utilizan forma, tipo y orden. Si el búfer es un objeto que expone la interfaz del búfer, se interpretan todas las palabras clave.El siguiente ejemplo proporciona una matriz aleatoria porque no asignamos valor de búfer:
otro ejemplo es asignar un objeto de matriz al ejemplo del búfer:
del ejemplo anterior notamos que no podemos asignar una lista a "buffer" y tuvimos que usar numpy.array () para devolver el objeto ndarray para el buffer
Conclusión: úsala
numpy.array()
si quieres hacer unnumpy.ndarray()
objeto "fuente
Creo que con
np.array()
usted solo puede crear C como si mencionara el orden, cuando verifica que usarlonp.isfortran()
dice falso. pero connp.ndarrray()
cuando especifica el orden que crea en función del orden proporcionado.fuente