2 डी सरणी पायथन की लंबाई का पता लगाएं


83

2d सरणी में मुझे कितनी पंक्तियाँ और स्तंभ मिले हैं?

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

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

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


4
आप की तरह लगता है एक numpy सरणी, नहीं सूचियों की एक सूची का उपयोग करना चाहिए
विम

जवाबों:


159

ऐशे ही:

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

यह मानते हुए कि सभी सब्लिस्ट्स की लंबाई समान है (यानी यह एक दांतेदार सरणी नहीं है)।


5
जब तक यह दांतेदार सरणी नहीं है, यह आदर्श है।
मकोतो

यो, मैं उस 2D सरणी डीईई योग 1 (इनपुट) में सभी तत्व का योग खोजना चाहता हूं: सीमा में पंक्ति के लिए योग = 0 (इनपुट (इनपुट) -1): रेंज में कॉल के लिए (लेन (इनपुट [0]) - 1 ): sum = sum + input [row] [col] रिटर्न सम प्रिंट प्रिंट १ ([[१, २], [३, ४], [५, ६]]) यह २१ (१ + २ + ३) के बजाय ४ प्रदर्शित करता है + ४ + ५ + ६ = २१)। मेरी गलती कहाँ है?
रोनाल्डिन्हो ने

1
(इनपुट में एक्स के लिए राशि (x)) योग: वहाँ एक सरल समाधान है
Oscar Lopez

1
@LongBodie: गलती यह है कि आप उस लंबाई से 1 घटाते हैं जहां आपको नहीं होना चाहिए। Range(n)पहले से ही 0,1, ..., एन -1 देता है ।
Junuxx

39

आप उपयोग कर सकते हैं 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 है।


2
धन्यवाद, मैं इस बात के लिए numpy का उपयोग नहीं करना चाहता था
urgeo

18

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

sum(len(x) for x in input)

महान, यह वही था जो मुझे चाहिए था! मेरे मामले में मैं 2 डिग्री तक की सूची के सभी तत्वों को गिन सकता हूं: सम (len (x) यदि आइंस्टीन (x, सूची) और 1 को x के लिए 1 कुछ_लिस्ट में)
Magnussen

10

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

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

1

आप यहाँ np.size (a, 1), 1 का भी उपयोग कर सकते हैं और यह आपको कॉलम की संख्या देगा


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.