Quelle est la différence entre ndarray
et array
dans Numpy? Et où puis-je trouver les implémentations dans le code source numpy?
242
Quelle est la différence entre ndarray
et array
dans Numpy? Et où puis-je trouver les implémentations dans le code source numpy?
numpy.array
est juste une fonction pratique pour créer un ndarray
; ce n'est pas une classe en soi.
Vous pouvez également créer un tableau à l'aide de numpy.ndarray
, mais ce n'est pas la méthode recommandée. De la docstring de numpy.ndarray
:
Les tableaux doivent être construits en utilisant
array
,zeros
ouempty
... Les paramètres donnés ici se réfèrent à une méthode de bas niveau (ndarray(...)
) pour instancier un tableau.
La majeure partie de la viande de l'implémentation est en code C, ici en multiarray , mais vous pouvez commencer à regarder les interfaces ndarray ici:
https://github.com/numpy/numpy/blob/master/numpy/core/numeric.py
np.array
n'est pas un cours, comme je le fais souvent.x = np.array([1,2.1,3])
if isinstance(x,np.array): # will give you a TypeError
array_getarray
c'est l'implémentation denumpy.ndarray.__array__
.numpy.array
commence à_array_fromobject
, au moins dans la mise en œuvre actuelle.numpy.array
est une fonction qui renvoie anumpy.ndarray
. Il n'y a pas de type d'objet numpy.array.la source
Juste quelques lignes d'exemple de code pour montrer la différence entre numpy.array et numpy.ndarray
Étape d'échauffement: construire une liste
Vérifiez le type
Tu auras
Construire un tableau (à partir d'une liste) en utilisant np.array
Ou, vous pouvez sauter l'étape d'échauffement, avoir directement
Vérifiez le type
Tu auras
qui vous indique que le type du tableau numpy est numpy.ndarray
Vous pouvez également vérifier le type en
et vous obtiendrez
L'une des deux lignes suivantes vous donnera un message d'erreur
la source
numpy.ndarray()
est une classe, tandis quenumpy.array()
est une méthode / fonction à créerndarray
.Dans numpy docs, si vous voulez créer un tableau à partir d'une
ndarray
classe, vous pouvez le faire de 2 façons, comme indiqué:1- à l'aide de
array()
,zeros()
ouempty()
méthodes: les tableaux doivent être construits à l'aide de tableaux, de zéros ou vides (voir la section Voir aussi ci-dessous). Les paramètres donnés ici font référence à une méthode de bas niveau (ndarray(…)
) pour instancier un tableau.2- à partir de la
ndarray
classe directement: Il existe deux modes de création d'un tableau à l'aide de__new__
: Si le tampon est None, seuls la forme, le dtype et l'ordre sont utilisés. Si buffer est un objet exposant l'interface de buffer, alors tous les mots clés sont interprétés.L'exemple ci-dessous donne un tableau aléatoire car nous n'avons pas attribué de valeur tampon:
un autre exemple consiste à affecter un objet tableau à l'exemple de tampon:
à partir de l'exemple ci-dessus, nous remarquons que nous ne pouvons pas attribuer une liste à "tampon" et nous avons dû utiliser numpy.array () pour renvoyer l'objet ndarray pour le tampon
Conclusion: utilisez
numpy.array()
si vous voulez faire unnumpy.ndarray()
objet "la source
Je pense qu'avec
np.array()
vous, vous ne pouvez créer du C que si vous mentionnez la commande, lorsque vous vérifiez son utilisation, ditesnp.isfortran()
false. mais avecnp.ndarrray()
lorsque vous spécifiez l'ordre qu'il crée en fonction de l'ordre fourni.la source