J'ai deux tableaux différents que je voudrais combiner afin que le nouveau tableau ait toujours la même forme que chacun des anciens.

    import numpy as np

    x = (['1','2','3','4','5','6','7','8','9'])
    y = (['a','b','c','d','e','f','g','h','i'])
    z = np.array(zip(x,y))        
    print z 
    print np.shape(z)

Me prend

   [['1' 'a']
    ['2' 'b']
    ['3' 'c']
    ['4' 'd']
    ['5' 'e']
    ['6' 'f']
    ['7' 'g']
    ['8' 'h']
    ['9' 'i']]
    (9, 2)

Et j'aimerais avoir

    [['1 a']
     ['2 b']
     ['3 c']
     ['4 d']
     ['5 e']
     ['6 f']
     ['7 g']
     ['8 h']
     ['9 i']]
     (9,)

Car j'ai besoin que le nouveau tableau ait une seule dimension pour un traitement ultérieur. Comme je suis un débutant, je pense que la fonction zip () pourrait ne pas être la bonne, mais j'ai également essayé la fonction .join () et je n'ai pas pu le comprendre de cette façon.

1
DaveL 8 mars 2016 à 18:20

3 réponses

Meilleure réponse

Je pense que vous avez juste besoin de rejoindre après avoir zippé. Essayez cette compréhension de la liste:

z = [" ".join(item) for item in zip(x, y)]

C'est ce que vous vouliez dire?

1
Michael Mulqueen 8 mars 2016 à 15:27

Vous pouvez créer une classe pour contenir les deux éléments pour un meilleur accès. Par exemple,

import numpy as np

class Elem():
    def __init__(self, a, b):
        self.a = a
        self.b = b


def create(lst):
    l = []
    for a, b in lst:
        l.append(Elem(a, b))
    return l

x = ['1','2','3','4','5','6','7','8','9']
y = ['a','b','c','d','e','f','g','h','i']
z = np.array(create(zip(x,y)))

print np.shape(list(z))
0
Hossain Muctadir 8 mars 2016 à 15:38
x =(['1','2','3','4','5','6','7','8','9'])
y = (['a','b','c','d','e','f','g','h','i'])
z =np.array(zip(x,y))
print z
print z[:,0].shape 
0
Fabio Duran Verdugo 8 mars 2016 à 15:28