2016-08-11 74 views
0

我不知道如何不斷改變列表中的第一個事件。舉例來說,我將有號碼列表如何刪除字符串中第一次出現重複的Python?

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。

+4

你試圖做什麼? – depperm

回答

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]) 
+2

如果您嘗試了更多一點,您可以通過直接將整個第一部分用作索引操作來進一步混淆/醜化。我叫懶! :p –

+1

@TasosPapastylianou在樣品運行中完成了這個願望;) – Divakar

+0

ahahahah,我說得太快了! :p –

1

您可以充分利用nan任何事件都是nan的事實。

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.] 
相關問題