2017-10-08 78 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

相关问题