如何根据每行的条件替换np 2d数组中的值

塞巴斯蒂安

我有一个lda_fit具有概率的numpy 2d数组(名为),我想根据每行的最大值用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指定轴:

(lda_fit.max(1,keepdims=True)==lda_fit)+0

注意:如果连续超过一个最大值,则所有最大值将返回1。对于替代解决方案,请遵循以下方法。

输出例如有问题的输入:

[[0 1 0 0]
 [1 0 0 0]
 [0 0 1 0]
 [0 0 0 1]
 [0 0 0 1]
 [1 1 1 1]]

如果连续存在多个max,如果您只希望第一个为1,其余的max为0,则可以使用argmax

(lda_fit.argmax(axis=1)[:,None] == range(lda_fit.shape[1]))+0

或相等:

lda_fit_max = np.zeros(lda_fit.shape, dtype=int)
lda_fit_max[np.arange(len(lda_fit)),lda_fit.argmax(axis=1)]=1

输出:

[[0 1 0 0]
 [1 0 0 0]
 [0 0 1 0]
 [0 0 0 1]
 [0 0 0 1]
 [1 0 0 0]]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从2D数组中删除空值?

PHP如何计算2D数组中的重复值?

如何根据条件在每行中添加日期

如何将值分配到2D向量(如2D数组)中

如何根据每行的总和对2D数组排序?

根据熊猫数据框替换numpy 2D数组中的值

基于 1d numpy 数组或列表替换 2d numpy 数组中的值

熊猫:如何根据多个列的条件将值替换为np.nan

如何根据条件替换值?

如何使用1d数组中的值填充2d数组?

如何使用 2d 数组的值作为 numpy 中 3d 数组的索引?

如何基于PHP中的索引值将2D数组拆分为数组块

每行将2d数组转换为2d唯一值数组

根据2D数组的值制作数组

如何在2D数组中搜索最小值和最大值

根据条件用np.select和np.where替换df中的值

在Python中,如何获取2D数组中“列”的最大值?

如何接受用户的值并将其存储到Java中的2D数组中?

如何在Redux Reducer中更新2D数组中的值?

我如何设置2D数组中某些元素的值(使用numpy在列表中)?

根据行总和在2D Numpy数组中设置值

根据索引中的值重复2D数组索引元组

根据单独的numpy向量中的值平铺2D numpy数组的行

如何根据条件设置每行的布尔值

在 2D numpy 数组中根据每个数组的某些索引中的值查找和切片?

python3如何在2d数组中减去(旁边的)值?

如何为C中的2D数组位置分配值?

如何在Python中的2d数组中找到值的索引?

如何基于两列的值在Java中对2D数组进行排序