129 votes

Convertir un tableau numpy en tuple

Remarque: C'est en demandant à l'inverse de l'habitude tuple-à-tableau de conversion.

Je dois passer un argument à un (enveloppé c++) en fonction d'un ensemble de n-uplet. Par exemple, les ouvrages suivants

X = MyFunction( ((2,2),(2,-2)) )

alors que les éléments suivants ne sont pas

X = MyFunction( numpy.array(((2,2),(2,-2))) )
X = MyFunction( [[2,2],[2,-2]] )

Malheureusement, l'argument que je voudrais utiliser vient à moi comme un tableau numpy. Ce tableau a toujours des dimensions 2xN pour un certain N, qui peuvent être assez grande.

Est-il un moyen facile de convertir un tuple? Je sais que je pourrais juste faire une boucle par, la création d'un nouveau tuple, mais préfèrent s'il y a une belle accéder au tableau numpy fournit.

Si il n'est pas possible de le faire en tant que bien comme je l'espère, ce qui est la plus jolie façon de le faire en faisant une boucle, ou quoi?

189voto

Niklas B. Points 40619
>>> arr = numpy.array(((2,2),(2,-2)))
>>> tuple(map(tuple, arr))
((2, 2), (2, -2))

32voto

Bi Rico Points 9851

Voici une fonction qui va le faire:

 def totuple(a):
    try:
        return tuple(totuple(i) for i in a)
    except TypeError:
        return a
 

Et un exemple:

 >>> array = numpy.array(((2,2),(2,-2)))
>>> totuple(array)
((2, 2), (2, -2))
 

12voto

Je n'étais pas satisfait, alors j'ai finalement utilisé ceci:

i: a = numpy.array ([[1,2,3], [4,5,6]])

i: a

o: tableau ([[1, 2, 3], [4, 5, 6]])

i: tuple (a.reshape (1, -1) [0])

o: (1, 2, 3, 4, 5, 6)

Je ne sais pas si c'est plus rapide, mais ça a l'air plus efficace;)

5voto

Une autre option

 tuple([tuple(row) for row in myarray])
 

Si vous passez des tableaux NumPy à des fonctions C ++, vous pouvez également envisager d’utiliser Cython ou SWIG.

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