¿Cuál es la diferencia entre ndarrayy arrayen Numpy? ¿Y dónde puedo encontrar las implementaciones en el código fuente numpy?
242
¿Cuál es la diferencia entre ndarrayy arrayen Numpy? ¿Y dónde puedo encontrar las implementaciones en el código fuente numpy?
numpy.arrayes 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,zerosoempty... 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.arrayno es una clase, como a menudo hago.x = np.array([1,2.1,3])if isinstance(x,np.array): # will give you a TypeErrorarray_getarrayes la implementación denumpy.ndarray.__array__.numpy.arraycomienza en_array_fromobject, al menos en la implementación actual.numpy.arrayes 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
ndarrayclase, 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
ndarrayclase 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