在多维数组上使用reduce函数
我有一个特别的数组,这个数组里面包含了两个独立的数组。我想把这两个独立的数组的平均值算出来。比如说,如果我有一个原始数组像这样 [(2,3,4),(4,5,6)]
,我想得到一个输出数组像 [3,5]
,我该怎么做呢?我尝试的方法如下:
averages = reduce(sum(array)/len(array), [array])
3 个回答
0
你可以使用列表推导式来实现这个功能:
data = [(2,3,4),(4,5,6)]
averages = [ sum(tup)/len(tup) for tup in data ]
2
在编程中,有时候我们会遇到一些问题,像是代码运行不起来或者出现错误。这些问题可能是因为我们写的代码有小错误,或者是使用的工具不太合适。解决这些问题的方法通常是仔细检查代码,看看有没有拼写错误,或者是逻辑上有没有不对的地方。
另外,了解你使用的编程语言和工具的基本知识也很重要。这样可以帮助你更快地找到问题所在,并且在遇到困难时,能够更有效地寻求帮助。
总之,编程就像是解决谜题,有时候需要耐心和细心去发现问题的根源。
>>> map(lambda x: sum(x)/len(x), [(2,3,4),(4,5,6)])
[3, 5]
0
reduce
在这里不是一个好的选择。直接使用列表推导式就可以了:
>>> a = [(2,3,4),(4,5,6)]
>>> [sum(t)/len(t) for t in a]
[3, 5]
请注意,在 Python 2 中,/
默认是整数除法。
如果你有 numpy
库可用,那你会有一个更好的选择:
>>> import numpy as np
>>> a = np.array(a)
>>> a.mean(axis=1)
array([ 3., 5.])