我有一個名為 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)。

郎朗坤
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 可以在這里提供幫助,它用于數值處理,但也許有一個很好的方法來編寫您需要的內容。
添加回答
舉報
0/150
提交
取消