Python NumPy:在两列之间获取更高的值

Python NumPy:在两列之间获取更高的值,python,arrays,numpy,Python,Arrays,Numpy,具有以下特征: g2 = np.array([[1,2,3,4,5,6,7,8,9,10],[1,2,1,3,4,5,6,7,9,2],[2,3,4,1,3,6,1,1,2,9]]) print g2.T [[ 1 1 2] [ 2 2 3] [ 3 1 4] [ 4 3 1] [ 5 4 3] [ 6 5 6] [ 7 6 1] [ 8 7 1] [ 9 9 2] [10 2 9]] 我怎样才能以一种好的方式打印?对于每行,最后两列之

具有以下特征:

g2 = np.array([[1,2,3,4,5,6,7,8,9,10],[1,2,1,3,4,5,6,7,9,2],[2,3,4,1,3,6,1,1,2,9]])
print g2.T
[[ 1  1  2]
 [ 2  2  3]
 [ 3  1  4]
 [ 4  3  1]
 [ 5  4  3]
 [ 6  5  6]
 [ 7  6  1]
 [ 8  7  1]
 [ 9  9  2]
 [10  2  9]]
我怎样才能以一种好的方式打印?对于每行,最后两列之间值较高的列数

我想要这样的东西:

 [[ 1 column 3 ]
 [ 2  column 3]
 [ 3  column 3]
 [ 4  column 3]
 [ 5  column 2]
 [ 6  column 2]
 [ 7  column 3]
 [ 8  column 2]
 [ 9  column 3]
 [10  column 3]]
>>> np.column_stack((g2.T[:, 0], np.argmax(g2.T[:, 1:], axis=1) + 2))
array([[ 1,  3],
       [ 2,  3],
       [ 3,  3],
       [ 4,  2],
       [ 5,  2],
       [ 6,  3],
       [ 7,  2],
       [ 8,  2],
       [ 9,  2],
       [10,  3]], dtype=int64) 

您可以使用
argmax
查找最大值的索引。首先使用
g2.T[:,1::
选择最后两列,然后跨轴1计算
argmax

由于您已经声明要将列标记为1、2和3,因此需要将
2
添加到
argmax
返回的内容中:

>>> np.argmax(g2.T[:, 1:], axis=1) + 2
array([3, 3, 3, 2, 2, 3, 2, 2, 2, 3], dtype=int64)
如果要将此数组与数组的第一列堆叠
g2.T
,可以使用
column\u stack
。整个事情看起来是这样的:

 [[ 1 column 3 ]
 [ 2  column 3]
 [ 3  column 3]
 [ 4  column 3]
 [ 5  column 2]
 [ 6  column 2]
 [ 7  column 3]
 [ 8  column 2]
 [ 9  column 3]
 [10  column 3]]
>>> np.column_stack((g2.T[:, 0], np.argmax(g2.T[:, 1:], axis=1) + 2))
array([[ 1,  3],
       [ 2,  3],
       [ 3,  3],
       [ 4,  2],
       [ 5,  2],
       [ 6,  3],
       [ 7,  2],
       [ 8,  2],
       [ 9,  2],
       [10,  3]], dtype=int64) 

@这个答案能回答你的问题吗?如果有什么不清楚的地方,请告诉我。