如何在Python中为每一行排列快速求和
假设我有一个如何在Python中为每一行排列快速求和,python,pandas,algorithm,numpy,permutation,Python,Pandas,Algorithm,Numpy,Permutation,假设我有一个nxk矩阵x。我想得到各列的和,但对于每一行的排列。因此,如果我的矩阵是[[1,2],[3,4],我想要的输出将是[1+2,1+4,3+2,3+4]。我在第一次尝试解决方案时生成了一个MWE示例。我希望我能得到一些帮助来减少计算时间 我的实际问题是n=160和k=4,运行需要相当长的时间(在撰写本文时,它仍在运行) 将熊猫作为pd导入 将numpy作为np导入 进口itertools n=4 k=3 X=np.random.randint(0,10,(n,k)) df=pd.Data
nxk
矩阵x
。我想得到各列的和,但对于每一行的排列。因此,如果我的矩阵是[[1,2],[3,4]
,我想要的输出将是[1+2,1+4,3+2,3+4]
。我在第一次尝试解决方案时生成了一个MWE示例。我希望我能得到一些帮助来减少计算时间
我的实际问题是n=160
和k=4
,运行需要相当长的时间(在撰写本文时,它仍在运行)
将熊猫作为pd导入
将numpy作为np导入
进口itertools
n=4
k=3
X=np.random.randint(0,10,(n,k))
df=pd.DataFrame(X)
df
您可以尝试
functools.reduce
:
from functools import reduce
reduce(np.add.outer, df.values.T).ravel()
ixi = df.index.tolist()
ixc = df.columns.tolist()
psum = np.array([df.lookup(i, ixc).sum() for i in
itertools.product(ixi, repeat=len(ixc))])
from functools import reduce
reduce(np.add.outer, df.values.T).ravel()