gpt4 book ai didi

python - 使用 Python 替换矩阵中的特定值

转载 作者:行者123 更新时间:2023-11-28 17:39:45 27 4
gpt4 key购买 nike

我有一个 m x n 矩阵,其中每一行都是一个样本,每一列都是一个类。每行包含每个类别的 soft-max 概率。我想用 1 替换每行中的最大值,用 0 替换其他行中的最大值。如何在 Python 中高效地执行此操作?

最佳答案

一些虚构的数据:

>>> a = np.random.rand(5, 5)
>>> a
array([[ 0.06922196, 0.66444783, 0.2582146 , 0.03886282, 0.75403153],
[ 0.74530361, 0.36357237, 0.3689877 , 0.71927017, 0.55944165],
[ 0.84674582, 0.2834574 , 0.11472191, 0.29572721, 0.03846353],
[ 0.10322931, 0.90932896, 0.03913152, 0.50660894, 0.45083403],
[ 0.55196367, 0.92418942, 0.38171512, 0.01016748, 0.04845774]])

一行:

>>> (a == a.max(axis=1)[:, None]).astype(int)
array([[0, 0, 0, 0, 1],
[1, 0, 0, 0, 0],
[1, 0, 0, 0, 0],
[0, 1, 0, 0, 0],
[0, 1, 0, 0, 0]])

一种更有效(也更冗长)的方法:

>>> b = np.zeros_like(a, dtype=int)
>>> b[np.arange(a.shape[0]), np.argmax(a, axis=1)] = 1
>>> b
array([[0, 0, 0, 0, 1],
[1, 0, 0, 0, 0],
[1, 0, 0, 0, 0],
[0, 1, 0, 0, 0],
[0, 1, 0, 0, 0]])

关于python - 使用 Python 替换矩阵中的特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26197903/

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