2
我想借此每2個元素的平均值在每列平均列子集的2D numpy的陣列中的所有列的
這裏是爲了方便陣列:
p = np.array([[1, 2, 3, 4, 5, 6],
[10, 12, 21, 12, 11, 51],
[743,123,1,42,12,9],
[51, 21, 31, 13, 12, 10],
[76, 12 , 11,88, 90, 12]])
我想讓每兩個連續元素的平均值爲每列:
p[0][0:2].mean() # mean of first 2 elements of the 1st column
這是我已經實現了(感謝sirfz answer)做,雖然我想擺脫的for循環如果可能的話(全光照摹numpy的只),並取回一個numpy的陣列,而無需手動做到這一點:?
parr = p[-1,:];
for i in range(3-1):
tmp = p[i*2:i*2+2,:].mean(axis=0)
parr = np.vstack([parr, tmp])
parr = np.roll(parr, -1, axis = 0)
返回
array([[ 5.5, 7. , 12. , 8. , 8. , 28.5],
[ 397. , 72. , 16. , 27.5, 12. , 9.5],
[ 76. , 12. , 11. , 88. , 90. , 12. ]])
更新:我結束了編輯接受的答案,以適應取均值在更多的元素上。被接受的答案的問題是在奇數行或列的情況下單獨的行或列。
ii = 2 # number of elements to average
if rows % 2 != 0:
rows -= 1
parr = p[:rows].reshape((np.int(rows/ii), ii, cols)).mean(axis=1)
parr = np.vstack([parr, p[-1]])
謝謝。你的答案可以幫助我擺脫一個循環,但我仍然需要循環遍歷整個列。 (PS:你的答案翻轉我的需求,但有幫助)。我也更新了這個問題。 – user10853
@ user10853結帳我的更新的解決方案,您的問題,希望這可以幫助 – sirfz
我結束編輯它輕微。我離開堆行(&列)到if語句的末尾,因爲我正在處理更大的數組,並且需要更大的子集的意思。 順便說一句,沒有一個函數在numpy或pandas或其他模塊中做類似的功能嗎? – user10853