在Python中,矩阵维求和是经常使用到的操作。矩阵是由多行、多列组成的二维数组。矩阵维求和指将某一维度上的所有元素相加。
# 例如,对于以下矩阵 matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] # 如果要对第一维度求和,结果为 [12, 15, 18] dim1_sum = [sum(row) for row in matrix] print(dim1_sum) # 如果要对第二维度求和,结果为 [6, 15, 24] dim2_sum = [sum(col) for col in zip(*matrix)] print(dim2_sum)
在第一段代码中,使用列表推导式对矩阵的每一行求和,将结果存储在一个列表中。在第二段代码中,使用了一个小技巧:将矩阵进行转置(使用zip函数),然后再对每一行求和。这样就能够方便地对第二维度进行求和。
需要注意的是,在实际应用中,矩阵的维度可能不止两维。在这种情况下,需要对每一个维度都进行求和,可以使用递归函数实现。
def multi_dimensional_sum(matrix, axis): if len(matrix) == 0: return None if axis == 0: return [sum(row) for row in matrix] else: return [multi_dimensional_sum([row[i] for row in matrix], axis-1) for i in range(len(matrix[0]))] # 对于以下三维矩阵 matrix_3d = [[[1, 2], [3, 4]], [[5, 6], [7, 8]], [[9, 10], [11, 12]]] # 对第一维度求和,结果为 [[4, 6], [12, 14], [20, 22]] dim1_sum = multi_dimensional_sum(matrix_3d, 0) print(dim1_sum) # 对第二维度求和,结果为 [[4, 6], [12, 14]] dim2_sum = multi_dimensional_sum(matrix_3d, 1) print(dim2_sum) # 对第三维度求和,结果为 [3, 11] dim3_sum = multi_dimensional_sum(matrix_3d, 2) print(dim3_sum)
在这段代码中,定义了一个递归函数multi_dimensional_sum。当axis为0时,函数对第一维度求和,返回一个包含每一行和的列表;当axis不为0时,函数对矩阵的每一列递归调用multi_dimensional_sum,直到axis为0。
通过以上方法,可以方便地对任意维度的矩阵进行求和操作。
本文可能转载于网络公开资源,如果侵犯您的权益,请联系我们删除。
0