如何针对数组的各列分别获取行数?
按列统计不规则数组的行数解决方案
嘿,这个问题在处理不规则结构的数组时挺常见的,我来给你捋捋几种实用的解决办法~
首先咱们先明确下数组的结构(拿Python举例,这是最常遇到这类需求的场景),你的数组大概是这样的:
arr = [ [1, 2, 3, 4], # 第0行:包含4列元素 [5, 6, 7, 8], # 第1行:包含4列元素 [9, 10, 11] # 第2行:只包含前3列元素 ]
这里第0、1、2列各有3个元素(对应3行数据),第3列只有2个元素(对应2行数据,正好符合你的描述)。
核心思路
本质上就是对每一列的索引,遍历所有行,检查该行是否包含该列的元素,统计符合条件的行数——只要某一行存在该列的元素,就说明这一行在该列有数据,计数加1。
具体实现方法
方法1:Python原生代码(无需额外库)
如果不想依赖第三方库,用原生循环或者列表推导式就能搞定:
写法一:直观循环
# 先确定数组的最大列数,避免遗漏最后一列 max_cols = max(len(row) for row in arr) if arr else 0 col_row_counts = [] for col_idx in range(max_cols): count = 0 for row in arr: # 检查当前行是否有该列的元素 if col_idx < len(row): count += 1 col_row_counts.append(count) print(col_row_counts) # 输出: [3, 3, 3, 2]
写法二:Pythonic列表推导式(更简洁)
如果喜欢简洁的写法,可以用列表推导式压缩代码:
max_cols = max(len(row) for row in arr) if arr else 0 col_row_counts = [sum(1 for row in arr if col_idx < len(row)) for col_idx in range(max_cols)] print(col_row_counts) # 同样输出: [3, 3, 3, 2]
方法2:用Pandas快速处理(适合数据量大的场景)
如果你平时用Pandas处理数据,那这个需求就更简单了——Pandas会自动识别缺失值,直接统计每列的非空元素个数即可:
import pandas as pd # 将数组转为DataFrame df = pd.DataFrame(arr) # 统计每列的非空行数,转成列表 col_row_counts = df.count().tolist() print(col_row_counts) # 输出: [3, 3, 3, 2]
内容的提问来源于stack exchange,提问作者12L304 RAJTHALAPATHY K.S.
相关产品推荐
相关产品推荐

