【发布时间】:2017-02-13 11:21:54
【问题描述】:
现在我有一个矩阵:test_projs,还有一个索引矩阵,GT_index
GT_index 每一行的每个元素表示该行需要的元素在test_projs 中的索引。现在我想计算选择区域上每一行的总和。
一个简单的例子:
test_projs = pd.DataFrame({0:[1,2,3], 1:[4,5,6], 2:[7,8,9], 3:[1,3,5]}, index=[3,4,5])
GT_index = pd.DataFrame({0:[3,2,1], 1:[2,3,2], 2:[1,1,3]}, index=[3,4,5])
b = np.zeros(3)
i = 0
for (index1, row1),(index2,row2) in zip(test_projs.iterrows(),GT_index.iterrows()) :
b[i]=row1[row2].values.sum()
i+=1
b
上面例子的结果是:
但它很慢。你知道如何提高它的效率吗?
【问题讨论】:
-
我正在删除“matlab”标签,因为该问题与 MATLAB 无关。
-
您的代码对我不起作用。您是否可以使用像
test_projs = pd.DataFrame({0:[1,2,3], 1:[4,5,6], 2:[7,8,9], 3:[1,3,5]}, index=[3,4,5])这样的小型 DataFrame 并添加所需的输出? -
@jezrael 是的,我会给出例子。
标签: performance pandas numpy matrix