【发布时间】:2020-09-14 19:03:38
【问题描述】:
如果我想在 NumPy 数组的每一列中找到最小值,我可以使用 numpy.amin() 函数。但是,有没有办法在每列中找到两个最小值,比对每列进行排序更快?
【问题讨论】:
如果我想在 NumPy 数组的每一列中找到最小值,我可以使用 numpy.amin() 函数。但是,有没有办法在每列中找到两个最小值,比对每列进行排序更快?
【问题讨论】:
您可以简单地在列中使用np.partition 来获得最小的N 数字-
N = 2
np.partition(a,kth=N-1,axis=0)[:N]
这实际上并没有对整个数据进行排序,只是分成两个部分,这样最小的 N 个数字位于第一个 部分,也称为partial-sort。
奖励(获得前 N 个元素): 同样,要获得每列的前 N 数字,只需使用负的 kth 值 -
np.partition(a,kth=-N,axis=0)[-N:]
沿其他轴和更高暗度阵列
要沿其他轴使用它,请更改 axis 值。因此,沿行,二维数组将是axis=1,对于更高维度的 ndarray 以相同的方式扩展。
【讨论】:
使用 min() 方法,并指定要平均的轴:
a = np.random.rand(10,3)
a.min(axis=0)
给予:
array([0.04435587, 0.00163139, 0.06327353])
a.min(axis=1)
给予
array([0.01354386, 0.08996586, 0.19332211, 0.00163139, 0.55650945,
0.08409907, 0.23015718, 0.31463493, 0.49117553, 0.53646868])
【讨论】: