Python和科学计算认证群组  - 讨论区

标题:请教一个判别数据的问题?

2011年06月16日 星期四 23:38

假如有以下2列数据,如何把第二列中 相邻的1所在位置找出来 并分组保存起来?

1    0
2    0
3    0
4    0
5    0
6    0
7    0
8    1
9    1
10    1
11    2
12    2
13    2
14    2
15    2
16    1
17    1
18    1
19    0
20    0
21    0
22    0
23    0
24    0
25    1
26    1
27    1
28    1
29    0
30    0
结果应该是: a1=[8,9,10] , a2=[16,17,18], a3=[25,26,27,28]

2011年06月17日 星期五 07:16

程序如下:

import numpy as np

 

index = np.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30])

value = np.array([0,0,0,0,0,0,0,1,1,1,2,2,2,2,2,1,1,1,0,0,0,0,0,0,1,1,1,1,0,0])

 

index2 = index[value==1]

split_index = np.where(np.diff(index2)>1)[0] + 1

 

index3 = np.split(index2, split_index)

 

print index3

用到了where, diff, split等NumPy的函数,你可以在IPython下分步运行,了解其计算的原理。

2011年06月17日 星期五 16:15

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号