查找2D数组Python的长度


82

如何找到二维数组中的行和列数?

例如,

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

应该显示为3行2列。


4
听起来您应该使用numpy数组,而不是列表列表
2012年

Answers:


158

像这样:

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

假定所有子列表具有相同的长度(也就是说,它不是锯齿状的数组)。


5
只要它不是锯齿状的数组,这就是理想的选择。
Makoto 2012年

哟,我想在2D数组中找到所有元素的总和def sum1(input):sum = 0表示范围内的行(len(input)-1):表示col范围内(len(input [0])-1 ):sum = sum + input [row] [col]返回总和print sum1([[1,2],[3,4],[5,6]])显示4而不是21(1 + 2 + 3 + 4 + 5 + 6 = 21)。我的错误在哪里?
罗纳尔迪尼奥学习编码

1
总和(SUM(X)为X输入):有一个简单的解决方案
奥斯卡·洛佩斯

1
@LongBodie:错误是您从不应该的长度中减去1。Range(n)已经给出0,1,...,n-1
Junuxx 2012年

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 '16

18

此外,计算总物料编号的正确方法是:

sum(len(x) for x in input)

太好了,这正是我所需要的!在我的情况下,我可以算出列表中所有元素的第二级数:sum(len(x)如果isinstance(x,list)否则在some_list中为x表示1)
Bjarne Magnussen

10

假设输入[行] [列],

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

1

您也可以使用np.size(a,1),其中1是轴,这将为您提供列数


0

假设 input[row][col]

rows = len(input)
cols = len(list(zip(*input)))
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.