【发布时间】:2018-02-16 07:47:27
【问题描述】:
浏览 Internet 并没有为我的问题提供任何结果。我有这样的数组:
y= [[ 2.63321579e-16 9.99986649e-01 2.90973702e-32 9.93230242e-06
1.56965105e-30 1.63843623e-07 8.52455060e-22 0.00000000e+00
5.65191413e-27 0.00000000e+00 3.20573202e-25 0.00000000e+00
3.33013941e-06 0.00000000e+00 8.01929339e-22 2.14279644e-26
0.00000000e+00 4.32979661e-08 1.01565330e-29 0.00000000e+00
0.00000000e+00 4.52104604e-11]
[ 0.00000000e+00 1.57162935e-01 0.00000000e+00 0.00000000e+00
0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00
0.00000000e+00 8.42837036e-01 3.78666698e-08 0.00000000e+00
0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00
0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00
0.00000000e+00 0.00000000e+00]]
我想做的是用“1”替换每行的第二个最大值,用“0”替换其中的任何其他值。我知道如何使用最大值,首先创建 zeros_like 数组,然后用 1 替换最大值。因此,方法是:
x = np.zeros_like(y)
x[np.arange(len(y)), y.argmax(1)] = 1
但是第二个最大值会如何呢?期望的输出应该是这样的:
y= [[ 0 0 0 **1** 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[ 0 **1** 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]]
我可以获得第二个最大值,但替换它会导致我的问题。
【问题讨论】:
-
也许这会有所帮助:stackoverflow.com/questions/10337533/…?