2015-06-03 56 views
0

數據我有兩個陣列,idx其中id是一個唯一的標識符,它告訴我們,在x的值屬於特定的組。我想要做的是通過x中的值來查看是否符合某些條件,如果是,則打印相應的x值。例如退出循環的,如果在一個陣列exceedes一些VALUE在另一個Python

id = np.array([1,1,1,2,2,2,3,3,3,4,4,4,5,5,5]) 
x = np.array([10,9,6,9,7,1,12,5,10,9,8,4,6,2,1]) 


    counter = 1 
    for i in range(len(id)): 
    if id[i] == counter: 
     for j in range(i,len(id)): 
      if x[j] > 7: 
      continue 
      else: 
       print(id[i],x[j]) 
       counter += 1  
       break 

打印

1 6 
2 7 
3 5 
4 4 
5 6 

現在,如果我們不是有

id = np.array([1,1,1,2,2,2,3,3,3,4,4,4,5,5,5]) 
x = np.array([10,9,6,9,7,1,12,11,10,9,8,4,6,2,1]) 

輸出是

1 6 
2 7 
3 4 
4 4 
5 6 

這不是我想要的輸出,因爲4不在那個組裏面具有id3。所以我的問題是,如果x值對應於表示它的id值並且不跳過該組,那麼只有如何評估條件if x[j] > 7:

回答

3

我有點困惑,但我會採取刺... 可以字典幫助嗎?

id = np.array([1,1,1,2,2,2,3,3,3,4,4,4,5,5,5]) 
x = np.array([10,9,6,9,7,1,12,5,10,9,8,4,6,2,1]) 

dict = {} 
for i in range(len(id)): 
    if id[i] not in dict: 
     dict[id[i]] = [] 
    dict[id[i]].append(x[i]) 

#you now have a dict that is keyed by your group-id and has a list of values for that group. 

for group in dict: 
    vals_in_group = dict[group] 
    for val in vals_in_group: 
     #check value? or just print 
     print group, val 
+0

因爲我以前從來沒有用過字典,所以我會如何將它集成到我的示例中?它是否就像'vals_in_group'中的val'做某事'一樣簡單? – Surfcast23

+1

其中我放了#check值,val是vals_in_group中的元素之一。如果你想檢查一個組的列表中是否存在某個值,那麼是的,你的「val_in_group:」中的val將會工作......在這種情況下,你可能會刪除for循環(for vals_in_group中的vals)和'val'將是您選擇的值。 – user1269942

+0

我對於'dict [group]'是什麼以及如何將'dictionary'集成到我的代碼中有點困惑。你介意爲我解釋一下你的代碼嗎? – Surfcast23

相關問題