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

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

使用 numpy 獲取數組列表中相交元素的計數(避免 for 循環)

使用 numpy 獲取數組列表中相交元素的計數(避免 for 循環)

忽然笑 2023-07-27 16:36:19
我有一個名為 MyFruits 的值數組,例如:[apple, orange, banana, apple, pear]然后我有一個數組列表,例如:[apple, orange][blueberry, watermelon, pear][grape, orange, grape, orange][][cantaloupe]對于列表中的每個數組,我想獲取與 MyFruits 數組相交的元素計數除以數組中的元素總數。所以輸出將是:2 / 2 = 11 / 3 = 0.666672 / 4 = 0.50 / 0 = (in this case 0)0 / 1 = 0本質上:[1, 0.66667, 0.5, 0, 0]我一直在Python中使用for循環來做這件事,但是數據集很大而且速度非常慢。有人建議使用 numpy,但我很難理解。
查看完整描述

2 回答

?
LEATH

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

假設您有兩個列表,一個長度為 M,另一個長度為 N。如果通過直接線性搜索完成,則需要 O(M * N) 字符串比較才能找到兩個列表中的元素。

您可以使用 Python 集對此進行改進。將列表轉換為 Python 集合并使用集合交集 (&)查找它們的公共元素。那么復雜度就降低到了 O(M + N)。


查看完整回答
反對 回復 2023-07-27
?
郎朗坤

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

這比你現有的更好,還是一樣?


ratios = []


for d in data:

? count = 0

? for fruit in myFruits:

? ? count += d.count(fruit)

? ratio = count / (len(d) or 1)

? ratios.append(ratio)


我不認為 numpy 可以在這里提供幫助,它用于數值處理,但也許有一個很好的方法來編寫您需要的內容。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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