如何在字符串中重复删除第一次出现的python?

时间:2016-08-11 20:06:56

标签: python list numpy

我不确定如何不断更改列表中的第一次出现。例如,我将有一个数字列表

import numpy as np
test=np.array([np.nan,np.nan,1,1,1,np.nan,1,1])

这给了我一个输出

array([ nan,  nan,   1.,   1.,   1.,  nan,   1.,   1.])

我想使用一个函数将其更改为

array([ nan,  nan,   nan,   1.,   1.,  nan,   nan,   1.])

每次启动时都会删除1的第一个实例。

2 个答案:

答案 0 :(得分:1)

你可以这样做 -

idx = np.diff(np.append(False,(test==1)).astype(int))==1
test[idx] = np.nan

示例运行

1)来自已发布问题的示例案例 -

In [80]: test
Out[80]: array([ nan,  nan,   1.,   1.,   1.,  nan,   1.,   1.])

In [81]: test[np.diff(np.append(False,(test==1)).astype(int))==1] = np.nan

In [82]: test
Out[82]: array([ nan,  nan,  nan,   1.,   1.,  nan,  nan,   1.])

2)开始时1的特殊情况 -

In [72]: test
Out[72]: array([ 1.,  1.,  0.,  1.,  0.,  0.,  1.,  1.,  0.,  1.])

In [73]: test[np.diff(np.append(False,(test==1)).astype(int))==1] = np.nan

In [74]: test
Out[74]: array([ nan,   1.,   0.,  nan,   0.,   0.,  nan,   1.,   0.,  nan])

答案 1 :(得分:1)

您可以利用nannan的任何事实。

import numpy as np
test=np.array([np.nan,np.nan,1,1,1,np.nan,1,1])

test[1:] *= test[:-1]
test[0] = np.nan

print test
# [ nan  nan  nan   1.   1.  nan  nan   1.]