【发布时间】:2016-08-26 14:08:26
【问题描述】:
我有一个 numpy 数组,想根据第一行“望远镜”这些值。一个例子是最好的描述方式
起始数组:
9 9 8 7 7 7 6
1 2 3 4 5 6 3
3 4 5 6 7 6 3
5 6 7 8 9 6 4
想要的输出数组:
9 8 7 6
3 3 15 3
7 5 19 3
11 7 23 4
这个想法是唯一化顶行并沿顶行中的值分组的后续行对值进行求和。第一行将被排序,数组大约有 2000 个单元格宽和 200,000 个单元格长。顶行中可以有任意数量的连续相同数字。我目前的技巧是这样的(示例中的顶行标签略有不同,我正在打印到屏幕而不是创建最终数组来检查输出。计划是堆叠输出以生成输出数组)
import numpy as N
kk=N.array([[90,90,85,80,80,80,70],[1,2,3,4,5,6,3],[3,4,5,6,7,6,3],[5,6,7,8,9,6,4]])
ll=kk[:,0]
for i in range(1,len(kk[0])):
if kk[0][i]==kk[0][i-1]:
ll=ll+kk[:,i]
elif kk[0][i]!=kk[0][i-1]:
print "sum=", ll, i,kk[0][i],kk[0][i-1]
ll=kk[:,i]
有两个缺陷。主要的是它没有处理最后一列,我不明白为什么。次要的一点是它也在对第一行求和。很明显,为什么会发生这个小问题。我怀疑我可以勉强解决那个问题,但未能处理最后一列让我沮丧了一段时间,我非常感谢任何处理它的建议。
感谢您的帮助
【问题讨论】:
标签: python arrays numpy indexing slice