我想用numpy爲一些統計對象製作集合字典,簡化狀態如下。使用numpy爲某些統計對象製作集合字典
有分別標量陣列記爲 a = np.array([n1,n2,n3...])
和2D陣列作爲 b = np.array([[q1_1,q1_2],[q2_1,q2_2],[q3_1,q3_2]...])
對於每個元素ni
在a
,我要挑選出所有包含ni
在b
元素qi([qi_1,qi_2])
和使用key
作爲ni
來收集它們的dict
。
我記錄了笨拙方法用於此目的(假設a
和b
被確定)爲以下代碼爲:
import numpy as np
a = np.array([i+1 for i in range(100)])
b = np.array([[2*i+1,2*(i+1)] for i in range(50)])
dict = {}
for i in a: dict[i] = [j for j in b if i in j]
毫無疑問,當a
和b
都很大,這將是非常慢。 有沒有其他有效的方法來取代上面的一個? 尋求你的幫助!
感謝這個建議,你的代碼比我的速度快得多,但當a和b很大時(例如a = 100000和b = 50000,RAM爲16G),仍然會給'記憶錯誤',而我的這種情況下的代碼不再有效。如何提高你的代碼來阻止那個錯誤? – zgfu1985
@ zgfu1985我調整了代碼,這應該解決問題,想想你是否真的需要這麼大的數組 –