Vous avez besoin d'un cours de recyclage sur le découpage des tableaux numpy ndarray. Également connue sous le nom d'indexation de tableau multidimensionnel, voir: docs.scipy.org/doc/numpy-1.13.0/reference/arrays.indexing.html Array tranche votre ndarray à l'aide de crochets et utilisez le séparateur virgule pour séparer la quantité de chaque dimension que vous voulez. Cela ressemblera à quelque chose comme (pas exactement) ceci: your_array[50:100, 7, :]qui aplatit l'objet 3D en 2D, en utilisant uniquement la tranche numéro 7 pour la 2ème dimension.
>>> arr = numpy.zeros((50,100,25))>>> arr.shape# (50, 100, 25)>>> new_arr = arr.reshape(5000,25)>>> new_arr.shape # (5000, 25)# One shape dimension can be -1. # In this case, the value is inferred from # the length of the array and remaining dimensions.>>> another_arr = arr.reshape(-1, arr.shape[-1])>>> another_arr.shape# (5000, 25)
Une légère généralisation à la réponse d'Alexandre - np.reshape peut prendre -1 comme argument, ce qui signifie "taille totale du tableau divisée par le produit de toutes les autres dimensions répertoriées":
par exemple pour aplatir tout sauf la dernière dimension:
Une légère généralisation à la réponse de Peter - vous pouvez spécifier une plage sur la forme du tableau d'origine si vous voulez aller au-delà des tableaux en trois dimensions.
par exemple pour aplatir toutes les dimensions sauf les deux dernières :
your_array[50:100, 7, :]
qui aplatit l'objet 3D en 2D, en utilisant uniquement la tranche numéro 7 pour la 2ème dimension.Réponses:
Jetez un œil à numpy.reshape .
la source
Une légère généralisation à la réponse d'Alexandre - np.reshape peut prendre -1 comme argument, ce qui signifie "taille totale du tableau divisée par le produit de toutes les autres dimensions répertoriées":
par exemple pour aplatir tout sauf la dernière dimension:
la source
Une légère généralisation à la réponse de Peter - vous pouvez spécifier une plage sur la forme du tableau d'origine si vous voulez aller au-delà des tableaux en trois dimensions.
par exemple pour aplatir toutes les dimensions sauf les deux dernières :
EDIT: Une légère généralisation à ma réponse précédente - vous pouvez, bien sûr, également spécifier une plage au début de la refonte:
la source
Une approche alternative consiste à utiliser
numpy.resize()
comme dans:la source