我有一个很大的二维数组,我需要得到轴1中最大值的索引和最大值本身。我可以如下检索这两个值:
import numpy as np
a = np.arange(27).reshape(9, 3)
idx = np.argmax(a, axis=1)
max_val = np.max(a, axis=1)
但是,由于我已经找到了最大值的索引,所以感觉我应该能够使用idx构造最大值的数组,而不必再次查找该值。
我知道我可以使用np.choose(idx, a.T)
,但这涉及到转置矩阵,这将比仅仅使用max
要昂贵得多。我可以做一些类似np.array([a[i][idx[i]] for i in range(len(a))])
的事情,但这涉及到创建一个列表,这似乎也比仅仅调用np.max
要昂贵得多。
有没有办法在numpy中将a
与idx
切片而不重新构造数组?
1条答案
按热度按时间h43kikqp1#
您的
a
和argmax
:使用索引数组的常见方法:
一个更新的工具,可能更容易使用(如果不熟悉第一个):