亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

numpy 2d:如何僅獲取第二列中允許的值的第一列中最大元素的索引

numpy 2d:如何僅獲取第二列中允許的值的第一列中最大元素的索引

慕雪6442864 2023-09-19 14:11:16
幫助找到解決問題的高性能方法:我在神經網絡(answers_weight)之后得到了結果,答案類別(相同長度)以及當前請求允許的類別:answers_weight = np.asarray([0.9, 3.8, 3, 0.6, 0.7, 0.99]) # ~3kk itemsanswers_category = [1, 2, 1, 5, 3, 1] # same size as answers_weight: ~3kk itemscategories_allowed1 = [1, 5, 8]res = np.stack((answers_weight, answers_category), axis=1)我需要知道最大元素的索引(在answers_weight數組中),但跳過不允許的類別(2,3)。在final中,索引必須= 2(“3.0”,因為“3.8”必須被跳過,因為類別不允許)
查看完整描述

2 回答

?
天涯盡頭無女友

TA貢獻1831條經驗 獲得超9個贊

最簡單的方法是使用 numpy 的 masked_arrays 根據 allowed_categories 來屏蔽權重,然后查找argmax:


np.ma.masked_where(~np.isin(answers_category,categories_allowed1),answers_weight).argmax()

#2

另一種使用掩碼的方法(假設最大權重是唯一的):


mask = np.isin(answers_category, categories_allowed1)

np.argwhere(answers_weight==answers_weight[mask].max())[0,0]

#2


查看完整回答
反對 回復 2023-09-19
?
一只萌萌小番薯

TA貢獻1795條經驗 獲得超7個贊

我也使用面膜解決了這個問題


inds = np.arange(res.shape[0])

# a mask is an array [False  True False False  True False]

mask = np.all(res[:,1][:,None] != categories_allowed1,axis=1)


allowed_inds = inds[mask]

# max_ind is not yet the real answer because the not allowed values are not taken into account

max_ind = np.argmax(res[:,0][mask])

real_ind = allowed_inds[max_ind]


查看完整回答
反對 回復 2023-09-19
  • 2 回答
  • 0 關注
  • 133 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號