zeros functions python numpy

functions - python numpy doc



Convertir numpy array en tupla (4)

Aquí hay una función que lo hará:

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

Y un ejemplo:

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

Nota: Esto es pedir el reverso de la conversión habitual de tupla a matriz.

Tengo que pasar un argumento a una función (wrap c ++) como una tupla anidada. Por ejemplo, los siguientes trabajos

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

mientras que los siguientes no

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

Desafortunadamente, el argumento que me gustaría usar viene a mí como una matriz numpy. Esa matriz siempre tiene dimensiones 2xN para algunos N, que pueden ser bastante grandes.

¿Hay alguna manera fácil de convertir eso en una tupla? Sé que podría pasar, creando una nueva tupla, pero preferiría si hay algún buen acceso que brinde la matriz numpy.

Si no es posible hacer esto tan bien como espero, ¿cuál es la forma más bonita de hacerlo mediante bucles, o lo que sea?


No estaba satisfecho, así que finalmente utilicé esto:

>>> a=numpy.array([[1,2,3],[4,5,6]]) >>> a array([[1, 2, 3], [4, 5, 6]]) >>> tuple(a.reshape(1, -1)[0]) (1, 2, 3, 4, 5, 6)

No sé si es más rápido, pero parece más efectivo;)


Otra opción

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

Si está pasando las matrices de NumPy a las funciones de C ++, también puede utilizar Cython o SWIG.


>>> arr = numpy.array(((2,2),(2,-2))) >>> tuple(map(tuple, arr)) ((2, 2), (2, -2))