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)
@这个答案能回答你的问题吗?如果有什么不清楚的地方,请告诉我。