indices = np.argsort(mse_RF)[:5]
print(indices)
[482 261 419 279 62]
indices = np.argpartition(mse_RF, 5)[:5]
print(indices)
[261 482 419 62 203]
indices = np.argpartition(mse_RF, 1)[:1]
print(indices)
[482]
在找到最小的三个数这个具体问题上,`np.argsort()`和`np.argpartition()`都可以得到准确的结果,只是它们的实现方式和性能略有不同。
- `np.argsort()`会对整个数组进行完全排序,并返回排序后的索引数组。这意味着它会考虑所有元素的顺序,并返回按照数值大小排序的索引。因此,使用`np.argsort()`可以得到准确的最小三个数。
- `np.argpartition()`是一种部分排序函数,它将数组分为两部分,左边是小于或等于分割点的元素,右边是大于分割点的元素。它返回的索引数组表示数列中小于或等于指定分割点的元素的位置,但并不保证这些元素之间的顺序。因此,虽然`np.argpartition()`可以找到部分最小的元素,但不能保证返回的索引数组中的元素是按照数值大小严格排序的。
如果你关心准确的顺序并且需要知道确切的最小三个数,使用`np.argsort()`是更准确的选择。如果你只关心找到最小的三个数的位置,而不需要确定它们之间的严格顺序,`np.argpartition()`可以提供更高的性能。
因此,在具体问题中,根据你的需求选择合适的函数,权衡准确性和性能的取舍。