Respuestas:
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 de numpy.ndarray.__array__
. numpy.array
comienza en _array_fromobject
, al menos en la implementación actual.
numpy.array
es una función que devuelve a numpy.ndarray
. No hay ningún tipo de objeto numpy.array.
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
a = [1,2,3]
Comprueba el tipo
print(type(a))
Conseguirás
<class 'list'>
Construya una matriz (de una lista) usando np.array
a = np.array(a)
O bien, puede omitir el paso de calentamiento, directamente tener
a = np.array([1,2,3])
Comprueba el tipo
print(type(a))
Conseguirás
<class 'numpy.ndarray'>
que te dice que el tipo de matriz numpy es numpy.ndarray
También puede verificar el tipo por
isinstance(a, (np.ndarray))
y obtendrás
True
Cualquiera de las dos líneas siguientes le dará un mensaje de error
np.ndarray(a) # should be np.array(a)
isinstance(a, (np.array)) # should be isinstance(a, (np.ndarray))
numpy.ndarray()
es una clase, mientras que numpy.array()
es un método / función para crear ndarray
.
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()
o empty()
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:
np.ndarray(shape=(2,2), dtype=float, order='F', buffer=None) array([[ -1.13698227e+002, 4.25087011e-303], [ 2.88528414e-306, 3.27025015e-309]]) #random
otro ejemplo es asignar un objeto de matriz al ejemplo del búfer:
>>> np.ndarray((2,), buffer=np.array([1,2,3]), ... offset=np.int_().itemsize, ... dtype=int) # offset = 1*itemsize, i.e. skip first element array([2, 3])
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 un numpy.ndarray()
objeto "
Creo que con np.array()
usted solo puede crear C como si mencionara el orden, cuando verifica que usarlo np.isfortran()
dice falso. pero con np.ndarrray()
cuando especifica el orden que crea en función del orden proporcionado.