如何从numpy数组中选择一组最小值?

2024-04-26 05:39:33 发布

您现在位置:Python中文网/ 问答频道 /正文

fitVec = np.zeros((100, 2))#初始化fitVec,其中第一列`将是索引,第二列将包含值

初始化之后,fitVec通过运行函数获得一些值。 最终fitVec值:

fitVec [[  2.00000000e+01   2.42733444e+10]
 [  2.10000000e+01   2.53836270e+10]
 [  2.20000000e+01   2.65580909e+10]
 [  2.30000000e+01   2.76674886e+10]
 [  2.40000000e+01   2.88334239e+10]
 [  2.50000000e+01   3.00078878e+10]
 [  2.60000000e+01   3.11823517e+10]
 [  2.70000000e+01   3.22917494e+10]
 [  2.80000000e+01   3.34011471e+10]
 [  2.90000000e+01   3.45756109e+10]
 [  3.00000000e+01   3.57500745e+10]
 [  3.10000000e+01   3.68594722e+10]
 [  3.20000000e+01   3.79688699e+10]
 [  3.30000000e+01   3.90782676e+10]
 [  3.40000000e+01   4.02527315e+10]
 [  3.50000000e+01   4.14271953e+10]
 [  3.60000000e+01   4.25365930e+10]
 [  3.70000000e+01   4.36476395e+10]]

**我还没有展示所有的100*4矩阵,让它看起来不那么凌乱。 现在我想从中选择二十(20*4)个最小值。 我在努力 获胜者=np.argmin格式(菲特维克[100,1]) 但它只给我一个最小值,而我想要20分钟的值。我该怎么办?你知道吗


Tags: 函数格式npzeros矩阵argmin获胜者fitvec
1条回答
网友
1楼 · 发布于 2024-04-26 05:39:33

首先,我将索引和值分开;不需要将它们都存储为float。在那之后,^{}就是你的朋友:

import numpy
idx = numpy.arange(20, 38, dtype=int)
vals = numpy.random.rand(len(idx))

i = numpy.argsort(vals)

sorted_idx = idx[i]
sorted_vals = vals[i]

print(idx)
print(vals)
print
print(sorted_idx)
print(sorted_vals)

输出:

[20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37]
[ 0.00560689  0.73380138  0.53490514  0.1221538   0.45490855  0.39076217
  0.39906252  0.59933451  0.7163099   0.393409    0.15854323  0.4631854
  0.92469362  0.69999709  0.67664291  0.73184184  0.52893679  0.60365631]

[20 23 30 25 29 26 24 31 36 22 27 37 34 33 28 35 21 32]
[ 0.00560689  0.1221538   0.15854323  0.39076217  0.393409    0.39906252
  0.45490855  0.4631854   0.52893679  0.53490514  0.59933451  0.60365631
  0.67664291  0.69999709  0.7163099   0.73184184  0.73380138  0.92469362]

相关问题 更多 >