我想作一个数组中一个不错的功能,以汇总数据(这是一个numpy的记录阵列,但它不会改变任何东西)以总阵列(numpy的或不)Python的方式
你有一个数组数据要一个轴之间聚集:例如dtype=[(name, (np.str_,8), (job, (np.str_,8), (income, np.uint32)]
数组,你想有每个作业
平均收入我做了这个功能,并且在本例中它应该被称为aggregate(data,'job','income',mean)
def aggregate(data, key, value, func):
data_per_key = {}
for k,v in zip(data[key], data[value]):
if k not in data_per_key.keys():
data_per_key[k]=[]
data_per_key[k].append(v)
return [(k,func(data_per_key[k])) for k in data_per_key.keys()]
问题是我觉得它不是很好我想把它放在一行中:你有什么想法吗?
谢谢您的回答路易
PS:我想保持FUNC在通话,让你也可以要求值,最小值......
我不知道numpy,但是你的'dtype'好像和括号有问题.. – int3 2009-12-01 22:27:09
括号不匹配。使一些额外的混乱。 – 2009-12-01 22:51:58
我不明白你的意见,你“希望在一行中”。当你调用函数时,这将是一行。这个函数本身有多少行是否重要?无论如何,我认为你最好的选择是使用'defaultdict'作为答案。 – steveha 2009-12-01 23:51:50