我想制定一个数组,它是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']])
答案 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