我曾通读过其他问题,其他人试图找出np.partition
或np.argpartition
的k个最小值.然而,这些看起来像是简单的一维或二维数组来操作.
我所拥有的是一个3D数组,我对其进行2D切片,并try 找到如下4个最小值:
import numpy as np
np.random.seed(556)
big_array = np.random.randint(0,200,size = (15,9,3))
for i in range(3):
min_vals = np.sort(big_array[:,:,i].flatten())[:4]
print("The smallest values for last axis #{} are: {:.1f},{:.1f},{:.1f},{:.1f}".format(i,*min_vals))
不幸的是,当第k个参数大于您试图指定的任何轴的维度时,np.partition
似乎不喜欢它,可能是因为我没有完全理解其语法.同样,它看起来不像np.sort
或np.argsort
有多轴参数的选项.
有没有一种方法可以在不使用for循环或列表理解的情况下实现这一点?