我有一个巨大的1和0的列表,如下所示:
x = [1,0,0,0,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1].
Run Code Online (Sandbox Code Playgroud)
完整列表在这里.
我想创建一个新的列表y,其条件是,只有当它们以> = 10的顺序出现时才应该保留1,否则那些1应该用零替换.
基于x以上^的ex ,y应该成为:
y = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1].
Run Code Online (Sandbox Code Playgroud)
到目前为止,我有以下内容:
import numpy as np
import itertools
nx = np.array(x)
print np.argwhere(np.diff(nx)).squeeze()
answer = []
for key, iter in itertools.groupby(nx):
answer.append((key, len(list(iter))))
print answer
Run Code Online (Sandbox Code Playgroud)
这给了我:
[0 3 8 14] # A
[(1, 1), (0, 3), (1, 5), (0, 6), (1, 10)] # B
Run Code Online (Sandbox Code Playgroud)
#A 这意味着在第0,第3等位置之后发生了变化.
#B 意味着有一个1,然后是三个0,然后是五个1,然后是6个零,接着是10个1.
如何y根据序列长度继续创建我们将用0替换1的位置的最后一步?
PS:##我对所有优秀人才的精彩解决方案感到谦卑.