三列之间的Numpy最大参数项目编号,输出为数组

时间:2015-07-14 00:35:42

标签: python numpy

我想制定一个数组,它是3列之间的最大值(项目#非值)。

E.g。

In:  arr=([(1,2,3,4), (4,5,16,0), (7,8,9,2)]) # maximum of columns 0, 1, 2, 3
Out: array([2,2,1,0])  # As: 7 > 4 > 1, 8 > 5 > 2, 16 > 9 > 3, and 4 > 2 > 0

当前(非工作解决方案):

np.argmax([arr['f0'], arr['f1'], arr['f2']])

1 个答案:

答案 0 :(得分:1)

您可以在axis中指定numpy.argmax密钥,该密钥独立地在numpy数组的指定轴上运行。在您的情况下,您希望通过查找每列的最大值索引来单独操作每个列,因此请指定axis=0。这是在IPython中给出数据的示例运行:

In [10]: import numpy as np

In [11]: arr=np.array([(1,2,3), (4,5,16), (7,8,9)])

In [12]: np.argmax(arr, axis=0)
Out[12]: array([2, 2, 1])

以上示例是您编辑帖子之前的例子。使用编辑中的新数据,这是一个示例运行:

In [13]: arr=np.array([(1,2,3,4), (4,5,16,0), (7,8,9,2)])

In [14]: np.argmax(arr, axis=0)
Out[14]: array([2, 2, 1, 0])

有关numpy.argmax的更多信息,请访问:http://docs.scipy.org/doc/numpy/reference/generated/numpy.argmax.html