python中怎样对多维数组的某一维求和,放在新的数组中

Python010

python中怎样对多维数组的某一维求和,放在新的数组中,第1张

在Python中,一个像这样的多维表格可以通过“序列的序列”实现。一个表格是行的序列。每一行又是独立单元格的序列。这类似于我们使用的数学记号,在数学里我们用Ai,j,而在Python里我们使用A[i][j],代表矩阵的第i行第j列。 这看起来非常像“元组的...

Python对二维数组求和的方法:首先定义好一个二维数组;然后使用map函数对数组里每一个元素进行sum操作即可对二维数组求和。

 关于二维数组求和的几种方法:

 a = [[1,2],[3,4],[5,6]]

   方法一 sum(map(sum,a)) 

map(func,a) 函数是对a中的每一个元素进行sum操作

解释一下map函数, map(fund, a)   equals   [func(i) for i in a]  and return a list

   方法二 sum(sum(i) for i in a) 

   方法三 sum(sum(a[i]) for i in range(len(a))) 

   方法四 reduce(lambda x,y:x+y , reduce(lambda x,y:x+y, a))

   解释一下reduce(fun,a),reduce返回的是一个结果值而不是一个list,第一步的时候是([1,2]+[3,4]) + [5,6]

   得到一个[1,2,3,4,5,6], 然后进行的运算是(((((1+2)+3)+4)+5)+6) = 21

一般来说最常用的还是1和3这两种方法,不知道map or reduce, 一般都会采用3, 而知道的应该会采用1,比较简洁。

推荐课程:Python核心基础(尚硅谷)

#!/usr/bin/python

# -*- coding:utf-8 -*-

# @Time    : 2018/6/10 15:00

# @File    : Sum_List.py

"""

输入一个2维列表 用该函数计算每一列的和并返回一个列表

"""

def sum_each_colum(olist):

    """

    计算多维数字数组每列的和,并作为一个列表的元素,最后返回这个列表

    :param olist:

    :return:slist

    """

    slist = []

    if isinstance(olist, list):

        slen = len(olist[0])

        for i in range(slen):

            s = 0.0

            for temp in olist:

                if isinstance(temp[i], (int, float)):

                    s += temp[i]

                else:

                    return u'不是数字,无法求和'

            else:

                slist.append(s)

        else:

            return slist

    else:

        return u'输入与要求不符'

if __name__ == '__main__':

    alist = eval(raw_input(u'请输入一个多维数字的列表[[1,2],[3,4]]:'))

    print sum_each_colum(alist)