2012-05-23 22 views
39

की लंबाई का पता लगाएं मैं कैसे प्राप्त कर सकता है कि कितने पंक्तियों और स्तंभों एक 2d सरणी में कर रहे हैं?
2 डी सरणी अजगर

उदाहरण के लिए,

Input = ([[1, 2], [3, 4], [5, 6]])` 

3 पंक्तियों और 2 कॉलम के रूप में प्रदर्शित किया जाना चाहिए।

+1

लगता है आप एक numpy सरणी सूचियों – wim

उत्तर

72
इस तरह

:

numrows = len(input) # 3 rows in your example 
numcols = len(input[0]) # 2 columns in your example 

यह मानते हुए कि सभी उप-सूचियों में एक ही लंबाई है (अर्थात, यह एक दांतेदार सरणी नहीं है)।

+2

की एक सूची इतने लंबे समय के लिए यह एक दांतेदार सरणी नहीं है के रूप में प्रयोग किया जाना चाहिए की तरह, नहीं, तो इस आदर्श है। – Makoto

+2

@ मकोटो यह सही है। मैंने कहा कि मेरे जवाब पर धारणा। –

+0

यो, मैं उस 2 डी सरणी डीफ़ sum1 (इनपुट) में सभी तत्वों का योग ढूंढना चाहता हूं: योग = पंक्ति 0 के लिए श्रेणी (लेन (इनपुट) -1): कॉल में श्रेणी के लिए (लेन (इनपुट [0 ]) - 1): योग = योग + इनपुट [पंक्ति] [col] वापसी राशि प्रिंट sum1 ([[1, 2], [3, 4], [5, 6]]) यह 21 के बजाय 4 प्रदर्शित करता है (1 + 2 + 3 + 4 + 5 + 6 = 21)। मेरी गलती कहां है? –

20

आप numpy.shape उपयोग कर सकते हैं।

import numpy as np 
x = np.array([[1, 2],[3, 4],[5, 6]]) 

परिणाम:

>>> x 
array([[1, 2], 
     [3, 4], 
     [5, 6]]) 
>>> np.shape(x) 
(3, 2) 

टपल में सबसे पहले मूल्य संख्या पंक्तियों = 3 है, टपल में दूसरा मूल्य = स्तंभों की संख्या है 2.

+0

धन्यवाद, मैं इस बात – urgeo

8

इनपुट [पंक्ति] [col] मानते हुए,

rows = len(input) 
    cols = map(len, input) #list of column lengths 
10

इसके अलावा, सही तरीका कुल आइटम संख्या की गणना करना होगा:

sum(len(x) for x in input) 
+0

ग्रेट के लिए numpy उपयोग करने के लिए नहीं करना चाहता था, यह मैं वास्तव में क्या जरूरत थी! मेरे मामले में मैं दूसरी डिग्री तक सूची के सभी तत्वों को गिन सकता हूं: sum (len (x) अगर isinstance (x, list) अन्य 1 में x के लिए x) – Inaki

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