2017-10-08 74 views
0

有沒有辦法返回一個大小爲k的數組,其中包含k個數組的大小相等的最小值?如何返回numpy數組中最小k個間隔的numpy數組?

例如:

k = 3 
arr = np.array([2,3,4,1,5,1,7,2,5,6,5,4,3,4,6,7,0,7]) 
mins = min_k(arr, k)//mins = np.array([2,1,2,4,3,0]) 

我只能認爲使用for循環遍歷由k的間隔陣列與附加在該間隔的分鐘到一個新的數組的。

回答

3

如果ARR的大小的k多個:

arr.reshape(-1, k).min(1) 
# array([2, 1, 2, 4, 3, 0]) 

否則,可以墊arr到的k與邊緣值的多個的長度,它重塑到(-1, k)k列),然後取最小行:

k = 3 
arr = np.array([2,3,4,1,5,1,7,2,5,6,5,4,3,4,6,7,0,7]) 

pad_width = 0 if len(arr) % k == 0 else k - len(arr) % k 
np.pad(arr, (0, pad_width), 'edge').reshape(-1, k).min(1) 
# array([2, 1, 2, 4, 3, 0]) 
+0

'arr.reshape(-1,k).min(1)'雖然給出相同的答案? –

+1

@cᴏʟᴅsᴘᴇᴇᴅ是的。試圖在這裏有一個更一般的答案。 – Psidom

相關問題