2012-04-16 13 views
6

¿Cómo obtener la traspuesta de esta matrix..Any más fácil, manera algorítmica para hacer esto ...matriz transpuesta pitón y el código postal

primera pregunta: ¿

Input a=[[1,2,3],[4,5,6],[7,8,9]] 
Expected output a=[[1, 4, 7], [2, 5, 8], [3, 6, 9]] 

segunda pregunta:

Zip me da el siguiente resultado, que se muestra a continuación, ¿cómo puedo comprimir cuando no sé cuántos elementos hay en la matriz, en este caso sé 3 elementos a [0], a [1], a [2] pero cómo puedo compruebo un [n] elementos

>>> zip(a[0],a[1],a[2]) 
[(1, 4, 7), (2, 5, 8), (3, 6, 9)] 

Respuesta

11

respuestas de la pregunta:

>>> import numpy as np 
>>> first_answer = np.transpose(a) 
>>> second_answer = [list(i) for i in zip(*a)] 

gracias a AFG para ayudar

+0

¿Qué pasa con la solución para la 1ª pregunta – Rajeev

+5

@Rajeev Esta es la respuesta a _las dos preguntas. 'zip (* a)' es la transposición de la matriz y también su propia inversa. – agf

+0

@agf: La primera salida de solución es una matriz de matrices y no una tupla .. – Rajeev

3

Puede utilizar numpy.transpose

numpy.transpose

>>> import numpy 
>>> a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 
>>> numpy.transpose(a) 
array([[1, 4, 7], 
     [2, 5, 8], 
     [3, 6, 9]]) 
10

Uso zip(*a):

>>> zip(*a) 
[(1, 4, 7), (2, 5, 8), (3, 6, 9)] 

Cómo funciona: zip (* a) es igual a zip (a [0], a [1], a [2]).

+1

Voté esto si tuvieras 'map (list, zip (* a))' ya que eso habría respondido la pregunta sin usar un módulo no estándar . – martineau

Cuestiones relacionadas