有这个:
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]]
答案 0 :(得分:0)
您可以使用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_stack
。整件事看起来像这样:
>>> 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)