這個問題在這里已經有了答案: 是否有任何 numpy 按功能分組? (11 個回答) 15 小時前關閉。
我正在嘗試對與 b 的值相對應的陣列 a 的不同值求和。
a = np.array([2,3,4,5,6,7,8,9,10])
b = np.array([1,1,1,2,3,4,5,5,6])
例如,陣列 b 有 3 個元素為 1(前 3 個元素),我想將陣列 a 中與該值對應的所有數字相加。此外,陣列 a 中的 8 和 9 應該加在一起,因為它們的 b 值相同:在這種情況下為 5。所以最終結果應該是一個陣列:
sum1 = np.array([9,5,6,7,17,10])
我嘗試使用帶有 if-else 陳述句的 for 回圈,但我無法得到我正在尋找的結果。
for i in range(1, len(a)-1):
if b[i-1] == b[i]:
sum1[i-1] = np.sum(a[i-1:i])
else:
sum1[i-1] = a[i-1]
所以我想知道是否有人可以通過給出可以幫助我的演算法或偽代碼來幫助我。我有一個包含數千個資料的文本檔案,這只是我想要做的簡化版本。
uj5u.com熱心網友回復:
嘗試itertools.groupby:
from itertools import groupby
a = np.array([2, 3, 4, 5, 6, 7, 8, 9, 10])
b = np.array([1, 1, 1, 2, 3, 4, 5, 5, 6])
c = [sum(v for v, _ in g) for v, g in groupby(zip(a, b), lambda x: x[1])]
print(c)
印刷:
[9, 5, 6, 7, 17, 10]
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/518095.html
