gpt4 book ai didi

python - numpy:将一行中的重复值设置为 0

转载 作者:行者123 更新时间:2023-11-28 22:35:52 24 4
gpt4 key购买 nike

我正在研究一种评分方法,该方法根据 3 次尝试的正确答案进行评分。对于每一行,如果第一次尝试正确,则得分为 1,如果第二次尝试正确,则得分为 1/2,如果第三次尝试正确,则得分为 1/3。

总分是每行分数的总和除以行数。

需要评分的输入是 shape(n,3) 的 numpy 数组,其中 n 是任意数字。

print inputs[0:5]
[[11111 22222 22222]
[44444 55555 55555]
[33333 33333 33333]
[11111 11111 11111]]

为了完成这项工作,我需要将任何重复值更改为 0 以防止重复计算。如果第一次尝试=第二次尝试,则第二次应设置为0。如果第二次尝试=第三次尝试,则第三次应设置为0,依此类推。

上面的numpy数组应该改成下面这样:

[[11111 22222 0]
[44444 55555 0]
[33333 0 0]
[11111 0 0]]

将给定行中的重复值更改为 numpy 数组中的 0 的 pythonic 方法是什么?

最佳答案

你可以使用 np.diff -

input[:,1:] *=(np.diff(input,axis=1)!=0)

因此,基本上我们沿着每一行寻找非零微分,并使用它来保持或将第二个元素设置为 0

sample 运行-

In [19]: input
Out[19]:
array([[11111, 22222, 22222],
[44444, 55555, 55555],
[33333, 33333, 33333],
[11111, 11111, 11111]])

In [20]: input[:,1:] *=(np.diff(input,axis=1)!=0)

In [21]: input
Out[21]:
array([[11111, 22222, 0],
[44444, 55555, 0],
[33333, 0, 0],
[11111, 0, 0]])

关于python - numpy:将一行中的重复值设置为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37909364/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com