如何根据分区将numpy2d数组的行相加

2024-09-27 07:29:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道什么是最快的方法,给定一个shape(n,m)numpy数组和一个shape(p)numpy数组描述一个0到n的分区(例如,n=6的一个这样的分区是:[0,2,4],这意味着索引被划分为(0,1),(2,3),(4,5)),返回一个shape(p,m) 与每个分区对应的行的总和。你知道吗

例如

[[0,1,1,1],
 [2,0,1,1],
 [0,0,0,1],
 [5,1,0,0]]

给定分区[0,1]应该返回

[[0,1,1,1],
 [7,1,1,2]]

我已经有了一个解决方案,就是构造矩阵

[[1,0,0,0],
 [0,1,1,1]]

把初始矩阵乘以这个,得到想要的矩阵,我认为应该很快,但是我认为可能会有一些更快的东西,包括类似的东西减量(https://docs.scipy.org/doc/numpy/reference/generated/numpy.ufunc.reduceat.html)使用分区数组。有什么帮助吗?你知道吗

等等。。。我刚刚阅读了reduceat文档,您可以直接执行np.add.reduceat(matrix, partition, axis=0)。我记得我以为你做不到。我想这是因为对于我的应用程序,我需要对稀疏矩阵做这个。那么,当输入的2d numpy数组是稀疏格式时,有人能建议如何执行此操作吗?你知道吗


Tags: 方法httpsorgnumpydocsdoc矩阵scipy

热门问题