gpt4 book ai didi

python - 找到无穷大值并替换为 numpy 数组中每个向量的最大值

转载 作者:行者123 更新时间:2023-12-05 08:47:16 24 4
gpt4 key购买 nike

假设我有以下形状为 (3, 5) 的数组:

array = np.array([[1, 2, 3, inf, 5],
[10, 9, 8, 7, 6],
[4, inf, 2, 6, inf]])

现在我想找到每个向量的无穷大值并将它们替换为该向量的最大值,下限为 1。

所以这个例子的输出应该是:

array_solved = np.array([[1, 2, 3, 5, 5],
[10, 9, 8, 7, 6],
[4, 6, 2, 6, 6]])

我可以通过遍历数组的每个向量并应用来做到这一点:

idx_inf = np.isinf(array_vector)
max_value = np.max(np.append(array_vector[~idx_inf], 1.0))
array_vector[idx_inf] = max_value

但我想有一个更快的方法。

有什么想法吗?

最佳答案

一种方法是先用np.isinfinf 转换为NaN使用 np.nanmax 屏蔽然后 NaNs 到行的最大值:

array[np.isinf(array)] = np.nan
array[np.isnan(array)] = np.nanmax(array, axis=1)

得到

>>> array

array([[ 1., 2., 3., 5., 5.],
[10., 9., 8., 7., 6.],
[ 4., 10., 2., 6., 6.]])

关于python - 找到无穷大值并替换为 numpy 数组中每个向量的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68087456/

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