2012-04-16 17 views
6

यह कैसे matrix..Any आसान, यह करने के लिए एल्गोरिथम रास्ते से पक्षांतरित पाने के लिए ...अजगर मैट्रिक्स पक्षांतरित और ज़िप

1 प्रश्न:

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

2 प्रश्न:

ज़िप मुझे निम्नलिखित आउटपुट देता है, मैं कैसे ज़िप कर सकता हूं जब मैं नहीं जानता कि सरणी में कितने तत्व हैं, इस मामले में मैं 3 तत्वों को एक [0], एक [1], एक [2] जानता हूं लेकिन कैसे मैं एक [एन] तत्वों को ज़िप करता हूं

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

उत्तर

11

सवाल जवाब का उपयोग कर सकते हैं:

+0

पहला प्रश्न – Rajeev

+5

@Rajeev के समाधान के बारे में क्या यह _both_ प्रश्नों का उत्तर है। 'ज़िप (* ए)' मैट्रिक्स ट्रांसपोजिशन है और इसलिए इसका अपना उलटा है। – agf

+0

@agf: पहला समाधान आउटपुट सरणी की सरणी है और tuple .. – Rajeev

3

आप 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

की मदद का उपयोग करें zip(*a) के लिए AFG को

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

धन्यवाद:

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

यह कैसे काम करता है: ज़िप (* ए) ज़िप के बराबर है (एक [0], एक [1], एक [2])।

+1

यदि आप 'नक्शा (सूची, ज़िप (* ए)) था तो मैं इसे अपवर्तित करूंगा क्योंकि' गैर-मानक मॉड्यूल का उपयोग किए बिना प्रश्न का उत्तर दिया होगा । – martineau

संबंधित मुद्दे