因为遇上一个问题需要对矩阵按照行、列求和,这里使用的PC上又无法安装numpy和pandas就只好自己动手写一个简化版的小函数了,其实很简单,就直接上代码了,下面是具体的实现:


#!usr/bin/env python
#encoding:utf-8

'''
__Author__:沂水寒城
功能:矩阵按照行列求和


矩阵内容如下:
1,1,0,1,1,0,1,1,1,0,1,1,1
1,1,1,1,1,0,0,1,0,0,1,1,1
1,1,0,1,1,0,1,1,1,0,1,1,0
1,1,0,1,1,0,1,1,1,0,1,1,0
1,1,0,1,1,0,1,1,1,0,1,1,0
1,1,0,1,1,0,1,1,1,0,1,1,0
1,1,0,1,1,0,1,1,1,0,1,1,1
1,1,0,1,1,0,1,1,1,0,1,1,0
1,1,0,1,1,0,1,1,1,0,1,1,1
1,1,0,1,1,1,1,1,1,1,1,1,0
'''


def sum_rows(matrix):
    '''
    按行求和
    '''
    sum_row_list1=[]
    for i in range(len(matrix)):
        count=0
        for j in range(len(matrix[i])):
            count+=matrix[i][j]
        sum_row_list1.append(count)
    sum_row_list2=map(sum,matrix)
    print '方法一结果为:', sum_row_list1
    print '方法二结果为:', sum_row_list2


def sum_cols(matrix):
    '''
    按列求和
    '''
    sum_col_list1=[]
    for i in range(len(matrix[0])):
        count=0
        for j in range(len(matrix)):
            count+=matrix[j][i]
        sum_col_list1.append(count)
    sum_col_list2=map(sum,zip(*matrix))
    print '方法一结果为:', sum_col_list1
    print '方法二结果为:', sum_col_list2


if __name__ == '__main__':
    matrix=[[1,1,0,1,1,0,1,1,1,0,1,1,1],
            [1,1,1,1,1,0,0,1,0,0,1,1,1],
            [1,1,0,1,1,0,1,1,1,0,1,1,0],
            [1,1,0,1,1,0,1,1,1,0,1,1,0],
            [1,1,0,1,1,0,1,1,1,0,1,1,0],
            [1,1,0,1,1,0,1,1,1,0,1,1,0],
            [1,1,0,1,1,0,1,1,1,0,1,1,1],
            [1,1,0,1,1,0,1,1,1,0,1,1,0],
            [1,1,0,1,1,0,1,1,1,0,1,1,1],
            [1,1,0,1,1,1,1,1,1,1,1,1,0]]

    print '*****************************按行求和********************************'
    sum_rows(matrix)
    print '*****************************按列求和********************************'
    sum_cols(matrix)


结果如下:


*****************************按行求和********************************
方法一结果为: [10, 9, 9, 9, 9, 9, 10, 9, 10, 11]
方法二结果为: [10, 9, 9, 9, 9, 9, 10, 9, 10, 11]
*****************************按列求和********************************
方法一结果为: [10, 10, 1, 10, 10, 1, 9, 10, 9, 1, 10, 10, 4]
方法二结果为: [10, 10, 1, 10, 10, 1, 9, 10, 9, 1, 10, 10, 4]
[Finished in 0.3s]


做完了感觉听有意思的

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐