gpt4 book ai didi

python - 比较 numpy.ndarray 中特定位置的元素

转载 作者:行者123 更新时间:2023-12-03 23:39:09 25 4
gpt4 key购买 nike

我不知道标题是否描述了我的问题。我有从 sigmoid 激活函数获得的浮点数列表。

  outputs = 
[[0.015161413699388504,
0.6720218658447266,
0.0024502829182893038,
0.21356457471847534,
0.002232735510915518,
0.026410426944494247],
[0.006432057358324528,
0.0059209042228758335,
0.9866275191307068,
0.004609372932463884,
0.007315939292311668,
0.010821194387972355],
[0.02358204871416092,
0.5838017225265503,
0.005475651007145643,
0.012086033821106,
0.540218658447266,
0.010054176673293114]]
为了计算我的指标,我想说如果任何神经元的输出值大于 0.5,则假定该评论属于该类(多标签问题)。我可以轻松地使用 outputs = np.where(np.array(outputs) >= 0.5, 1, 0)但是,如果 class#5 和任何其他类的值 > 0.5(因为 class#5 不能与其他类一起出现),我想添加一个条件以仅考虑更大的值。这个条件怎么写?
在我的示例中,输出应该是:
[[0 1 0 0 0 0]
[0 0 1 0 0 0]
[0 1 0 0 0 0]]
代替:
[[0 1 0 0 0 0]
[0 0 1 0 0 0]
[0 1 0 0 1 0]]
谢谢,

最佳答案

您可以编写一个自定义函数,然后将其应用于 outputs 中的每个子数组。使用 np.apply_along_axis()功能:

def choose_class(a):
if (len(np.argwhere(a >= 0.5)) > 1) & (a[4] >= 0.5):
return np.where(a == a.max(), 1, 0)
return np.where(a >= 0.5, 1, 0)

outputs = np.apply_along_axis(choose_class, 1, outputs)
outputs
# array([[0, 1, 0, 0, 0, 0],
# [0, 0, 1, 0, 0, 0],
# [0, 1, 0, 0, 0, 0]])

关于python - 比较 numpy.ndarray 中特定位置的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67069313/

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