我试图通过它们的特性有效地对单独数据数组的元素求和。我在给定的数组中有三个识别特征(年龄,年份和原因),对于每个年龄,年份,原因,我有1000个值。当特征相同时,我需要将这些值添加到另一个数据数组。现在,我正在做这样的事情,每个数据集都是〜(80000,1000):
import numpy as np
datasets = np.vstack(dataset1, dataset2)
for a in ages:
for y in years:
for c in causes:
output = np.sum(datasets[(age==a) & (year==y) & (cause==c)], axis = 0)
但是,通过60,000次迭代,这非常慢。挑战在于阵列不一定都具有相同的形状。有什么想法吗?
答案 0 :(得分:2)
我推荐像accumarray这样的东西。您的输出应该是一个三维数据立方体,其中每个维度对应一个变量(年龄,年份,原因)。每个维度中的每个索引都对应于输入列表中的唯一值。然后,您可以使用类似cookbook example之类的内容,使用年龄,年份和原因将数据集变量累积到相应的bin中。
您也可以考虑使用适当的关系数据库。他们在这些事情上都很快。 Python附带sqlite3作为核心的一部分。不幸的是,如果您之前从未使用过关系数据库,那么这是一个相当陡峭的学习曲线。您需要使用group
和aggregate
功能。
答案 1 :(得分:0)
见下面的链接
我不确定如何正确地将这个答案的另一个答案联系起来。当我尝试一个句子后跟链接时,它将答案转换为评论。我现在感到很啰嗦,试图让堆栈溢出认为这个文本足够长,可以构成一个答案。这是这个问题的一个很好的答案的链接。