我在尋找一種有效的方式將數組分割成具有相似的直方圖塊。拆分數組均勻分佈的塊
例如,給定陣列:
l = np.array([1, 2, 3, 4, 1, 1, 1, 2, 3, 4, 55, 5, 5, 5, 5, 5, 3, 2, 2, 21, 2])
我想獲得:
c1 = np.array([1, 4, 1, 5, 5, 3, 2])
c2 = np.array([2, 1, 3, 4, 5, 5, 2])
c3 = np.array([3, 1, 2, 55, 5, 2, 21])
不僅如此,但是每個塊應該對一個給定的功能的類似的尺寸和類似的總和F:
1. |sum(ci, f) - sum(cj, f)| < e, for i != j
2. |len(ci) - len(cj)| < e, for i != j
其中
sum(c, f) = f(c[0]) + ... + f(c[len(c)])
編輯: 澄清這個意圖。我想通過列表並行化一個進程到n
子進程,但成本必須在每個子進程之間均勻分配。處理在該列表中的元素的成本是在陣列l
,其中f是該方法的計算複雜度相同位置的整數的函數f
。例如,f(i)=i^2
。所以,我希望所有進程具有相同的計算成本,不要讓進程過早完成,而其他進程永遠持續。
請分享你如何得到C1,C2和C3以上。 – emeth
最後,終於。謝謝,先生,給出一個_minimal_例子。 –
@mskimm:我手動完成了。獲取它們的方式正是我所要求的... – synack