如何在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()