2012-04-16 44 views
6

Làm thế nào để có được những chuyển vị của matrix..Any này dễ dàng hơn, cách thuật toán để làm điều này ...ma trận python transpose và zip

1 câu hỏi:

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

Câu hỏi 2:

Zip cung cấp cho tôi sản lượng dưới đây cho biết, làm cách nào tôi có thể nén khi tôi không biết có bao nhiêu phần tử trong mảng, trong trường hợp này tôi biết 3 phần tử [0], [1], a [2] nhưng cách i zip a [n] elements

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

Trả lời

11

câu hỏi câu trả lời:

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

nhờ AFG vì đã giúp ra

+0

Giải pháp cho câu hỏi thứ nhất – Rajeev

+5

@Rajeev Đây là câu trả lời cho câu hỏi _both_. 'zip (* a)' là chuyển vị ma trận và do đó là nghịch đảo riêng của nó. – agf

+0

@agf: Đầu ra giải pháp đầu tiên là mảng mảng và không tuple .. – Rajeev

3

Bạn có thể sử dụng 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

Sử dụng zip(*a):

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

Cách hoạt động: zip (* a) bằng zip (a [0], a [1], a [2]).

+1

Tôi sẽ upvote điều này nếu bạn có 'bản đồ (danh sách, zip (* a))' vì điều đó sẽ trả lời câu hỏi mà không sử dụng mô-đun phi tiêu chuẩn . – martineau

Các vấn đề liên quan