8
votes

Empiler des chiffres numpés sans perdre leur recouvrement

Supposons que je fais deux recarrasses avec le même dttype et les empilez: xxx

bien que a et b sont recarrays, C n'est pas le cas: xxx

Je peux évidemment la transformer en recharge à nouveau, comme indiqué avec d ci-dessus, mais c'est-à-dire incommode. Y a-t-il une raison pour laquelle l'empilement de deux recarrays ne produit pas un autre recharge?


0 commentaires

3 Réponses :


9
votes

Je ne sais pas. Très probablement, c'est un bug / fonctionnalité qui n'a jamais été mis en œuvre. numpy.hstack est essentiellement un wrapper autour d'une fonction dans numpy.core.fromnumeric . Numérique est l'un des deux prédécesseurs de Numpy. La plupart des fonctions en numpopy ont une convention pour générer le même type que l'entrée en appelant la méthode __ array_wrap __ de l'entrée sur la sortie et que la sortie résultante doit avoir les mêmes données, mais "emballé" dans la nouvelle classe. Peut-être que le concept d'emballage n'était pas en numérique, et que jamais a été ajouté à cette fonction.

Vous pouvez utiliser cette technique pour créer une fonction d'empilement plus intelligente xxx

ceci fonctionne Pour les recharps et les tableaux réguliers xxx

Je ne sais pas ce que vous planifiez, mais vous voudrez peut-être demander sur le Liste de diffusion numpy est une meilleure façon que d'utiliser la méthode documentée, mais à double sens, et quel est leur raisonnement pour ne pas faire l'emballage.


0 commentaires

-2
votes

Incidemment, vous pouvez également utiliser: xxx

ou xxx

(source: Ce message de liste de diffusion )


1 commentaires

Ils ne préservent pas le recouvrement non plus.



10
votes

Alternativement, il existe des utilitaires d'assistance dans numpy.lib.reccunctions que j'ai trébuché sur ici . Ce module a des fonctions pour la fusion et l'empilement recarrays : xxx

si on veut ajouter des colonnes supplémentaires à un recarray , cela peut être Fait en utilisant fusion_arrays : xxx

(Bien que pas une réponse à la question, je pose la dernière exemple comme référence)


1 commentaires

Pour Stack_arrays : Si le type des colonnes empilées peut être différent, utilisez l'argument facultatif autoconvert = true . Notez que a (type = ) serait considéré différent de aa (type = ), Donc, autoconvert peut venir utile dans ces situations.