对于单个阵列,有很多解决方案可以做到这一点,但是矩阵怎么样,例如:
>>> k
array([[ 35, 48, 63],
[ 60, 77, 96],
[ 91, 112, 135]])
您可以使用k.max()
,但当然这只返回最高值135
。如果我想要第二个或第三个怎么办?
答案 0 :(得分:20)
作为said,np.partition
应该更快(最多O(n)运行时间):
np.partition(k.flatten(), -2)[-2]
应该返回第二大元素。 (partition
保证编号元素在位,前面的所有元素都更小,后面的所有元素都更大。)
答案 1 :(得分:10)
您可以Command line tool to query HTML elements矩阵然后对其进行排序:
>>> k = np.array([[ 35, 48, 63],
... [ 60, 77, 96],
... [ 91, 112, 135]])
>>> flat=k.flatten()
>>> flat.sort()
>>> flat
array([ 35, 48, 60, 63, 77, 91, 96, 112, 135])
>>> flat[-2]
112
>>> flat[-3]
96
答案 2 :(得分:0)
build/python
答案 3 :(得分:0)
手头的数组中出现重复元素时的另一种方法。 如果我们有
a = np.array([[1,1],[3,4]])
然后第二大元素将是3,而不是1。
或者,可以使用以下代码段:
second_largest = sorted(list(set(a.flatten().tolist())))[-2]
首先,将矩阵展平,然后仅保留唯一元素,然后返回可变列表,对其进行排序,然后获取第二个元素。即使数组中有重复的元素,这也应从末尾返回第二大元素。
答案 4 :(得分:0)
<div class="container" id="containerTimeLine">
<ul class="bigger highlight-active">
<li onclick="PlayAudios();"></li>
<!-- class="active" -->
<li class="video"></li>
<li class="question"></li>
<li class="question"></li>
<li class="question"></li>
<li class="question"></li>
<li></li>
</ul>
</div>
答案 5 :(得分:0)
使用“独特”功能是一种非常干净的方法,但可能不是最快的方法:
k = array([[ 35, 48, 63],
[ 60, 77, 96],
[ 91, 112, 135]])
i = numpy.unique(k)[-2]
第二大