Tìm độ dài của mảng 2D trong Python


82

Làm cách nào để tìm bao nhiêu hàng và cột trong một mảng 2d?

Ví dụ,

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

nên được hiển thị dưới dạng 3 hàng và 2 cột.


3
có vẻ như bạn nên sử dụng một mảng numpy, không phải một danh sách danh sách
wim

Câu trả lời:


157

Như thế này:

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

Giả sử rằng tất cả các danh sách con có cùng độ dài (nghĩa là nó không phải là một mảng răng cưa).


5
Miễn là nó không phải là một mảng răng cưa, điều này là lý tưởng.
Makoto

yo, tôi muốn tìm tổng của tất cả các phần tử trong mảng 2D đó def sum1 (input): sum = 0 for row in range (len (input) -1): for col in range (len (input [0]) - 1 ): sum = sum + input [row] [col] return sum in sum1 ([[1, 2], [3, 4], [5, 6]]) Nó hiển thị 4 thay vì 21 (1 + 2 + 3 + 4 + 5 + 6 = 21). Sai lầm của tôi ở đâu?
Ronaldinho Learn Coding

1
Có một giải pháp đơn giản hơn: sum (sum (x) cho x ở đầu vào)
Óscar López

1
@LongBodie: Sai lầm là bạn trừ đi 1 từ độ dài mà bạn không nên. Range(n)đã cho 0,1, ..., n-1 .
Junuxx

39

Bạn có thể sử dụng numpy.shape.

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

Kết quả:

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

Giá trị đầu tiên trong bộ giá trị là số hàng = 3; giá trị thứ hai trong bộ giá trị là số cột = 2.


2
Cảm ơn bạn, tôi không muốn sử dụng numpy cho việc này
uro

18

Ngoài ra, cách chính xác để đếm tổng số mặt hàng sẽ là:

sum(len(x) for x in input)

Tuyệt vời, đây chính xác là những gì tôi cần! Trong trường hợp của tôi, tôi có thể đếm tất cả các yếu tố của một danh sách lên đến mức độ 2: sum (len (x) nếu isinstance (x, danh sách) khác 1 cho x trong some_list)
Bjarne Magnussen

10

Giả sử đầu vào [hàng] [col],

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

1

Bạn cũng có thể sử dụng np.size (a, 1), 1 ở đây là trục và điều này sẽ cung cấp cho bạn số cột


0

giả định input[row][col]

rows = len(input)
cols = len(list(zip(*input)))
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.