我有一个带有概率的numpy 2d数组(名为lda_fit
),其中我希望根据每行中的最大值,将概率替换为0或1
array([[0.06478282, 0.80609092, 0.06511851, 0.06400775],
[0.50386571, 0.02621445, 0.44400621, 0.02591363],
[0.259538 , 0.04266385, 0.65470484, 0.04309331],
...,
[0.01415491, 0.01527508, 0.22211579, 0.74845422],
[0.01419367, 0.01537099, 0.01521318, 0.95522216],
[0.25 , 0.25 , 0.25 , 0.25 ]])
因此,毕竟第一行应该像[0,1,0,0]
,第二行像[1,0,0,0]
,依此类推。我已经尝试过了,这是可行的,但只适用于给定的阈值(0.5):
np.where(lda_fit < 0.5,0,1)
但由于最大值可能不大于0.5,因此我希望为每行指定一个新阈值。不幸的是,这给了我整个数组的最大值
np.where(lda_fit < np.max(lda_fit),0,1)
可以使用
np.max
指定轴:注意:如果一行中有多个最大值,则所有最大值都将返回1。对于替代解决方案,请遵循下一种方法
输出,例如有问题的输入:
如果一行中有多个max,如果您只想将第一个max设置为1,将其余max设置为0,则可以使用
argmax
:或者同等地:
输出:
相关问题 更多 >
编程相关推荐