咨询4×9矩阵从首列开始隔列元素总和的实现方法
计算4×9矩阵中从第一列开始每隔一列的元素总和
Got it! Let's break down how to calculate the sum of every other column starting from the first one in your 4×9 matrix using the sum() function. I'll cover both regular Python lists and NumPy arrays since those are the most common ways to work with matrices.
情况1:矩阵是普通Python列表(列表的列表)
假设你的矩阵 c 长这样:
c = [ [1, 2, 3, 4, 5, 6, 7, 8, 9], [10, 11, 12, 13, 14, 15, 16, 17, 18], [19, 20, 21, 22, 23, 24, 25, 26, 27], [28, 29, 30, 31, 32, 33, 34, 35, 36] ]
步骤:
提取目标列的所有元素:
我们需要取第1、3、5、7、9列(从1开始计数),对应Python的0基索引就是0, 2, 4, 6, 8。用嵌套列表推导式可以一次性取出所有这些元素:target_elements = [row[i] for row in c for i in range(0, len(row), 2)]这里
range(0, len(row), 2)生成的就是步长为2的列索引,刚好符合"每隔一列"的要求。用
sum()计算总和:
把提取到的元素直接传入sum()函数即可:total = sum(target_elements)
简化成一行代码:
如果不想单独存中间变量,直接合并成一行也完全没问题:
total = sum(row[i] for row in c for i in range(0, len(row), 2))
情况2:矩阵是NumPy数组(数据处理常用)
如果你的矩阵是用NumPy存储的(这在数据分析场景里很常见),方法会更简洁:
首先导入NumPy并定义矩阵:
import numpy as np c = np.array([ [1, 2, 3, 4, 5, 6, 7, 8, 9], [10, 11, 12, 13, 14, 15, 16, 17, 18], [19, 20, 21, 22, 23, 24, 25, 26, 27], [28, 29, 30, 31, 32, 33, 34, 35, 36] ])
然后直接切片+求和:
total = c[:, ::2].sum()
这里 [:, ::2] 是NumPy的切片语法:
:表示取所有行::2表示列从0开始,步长为2(也就是每隔一列取一次)
最后调用.sum()方法就能得到所有目标元素的总和。
验证结果
拿上面的示例矩阵来说,目标列的元素总和是370,不管用哪种方法计算,结果都能对上,你可以自己测试一下~
内容的提问来源于stack exchange,提问作者Abby
相关产品推荐
相关产品推荐

