86 votes

Comment créer un tableau numpy multidimensionnel avec une taille de ligne variable?

Je voudrais créer un tableau numpy à deux dimensions de tableaux qui a un nombre différent d'éléments sur chaque ligne.

En essayant

 cells = numpy.array([[0,1,2,3], [2,3,4]])

donne une erreur

 ValueError: setting an array element with a sequence.

22voto

tom10 Points 19886

Ce n'est pas bien pris en charge dans Numpy (par définition, presque partout, un "tableau à deux dimensions" a toutes les lignes de longueur égale). Une liste Python de tableaux Numpy peut être une bonne solution pour vous, car vous bénéficierez ainsi des avantages de Numpy là où vous pourrez les utiliser :

 cells = [numpy.array(a) for a in [[0,1,2,3], [2,3,4]]]

4voto

Dans numpy 1.14.3, en utilisant append :

 d = []                 # initialize an empty list
a = np.arange(3)       # array([0, 1, 2])
d.append(a)            # [array([0, 1, 2])]
b = np.arange(3,-1,-1) #array([3, 2, 1, 0])
d.append(b)            #[array([0, 1, 2]), array([3, 2, 1, 0])]

ce que vous obtenez une liste de tableaux (qui peuvent être de différentes longueurs) et vous pouvez effectuer des opérations comme d[0].mean() . D'autre part,

 cells = numpy.array([[0,1,2,3], [2,3,4]])

donne un tableau de listes.

Vous pouvez vouloir faire ceci :

 a1 = np.array([1,2,3])
a2 = np.array([3,4])
a3 = np.array([a1,a2])
a3 # array([array([1, 2, 3]), array([3, 4])], dtype=object)
type(a3) # numpy.ndarray
type(a2) # numpy.ndarray

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X