在 Python 中将一个元素替换为另一个元素

Replacing one element with another in Python

我想在矩阵 P 中用 0 替换 inf。附上所需的输出。

import numpy as np
P = np.array([-1.54511316e+12-inf, -1.54511316e+12-inf,-inf,inf,inf])

期望的输出是:

array([-1.54511316e+12, 0, -1.54511316e+12, 0, 0, 0, 0])

您可以组合 numpy.where and numpy.isfinite:

P2 = np.where(np.isfinite(P), P, 0)

输出:

array([-1.54511316e+12,  0.00000000e+00, -1.54511316e+12,  0.00000000e+00,
        0.00000000e+00,  0.00000000e+00,  0.00000000e+00])

或者,对于就地修改:

P[~np.isfinite(P)] = 0

作为替代方法,如果确定我们只有 infs(不是 nans),还有另一个 NumPy 工具 np.isinf:

P[np.isinf(P)] = 0

# [-1.54511316e+12  0.00000000e+00 -1.54511316e+12  0.00000000e+00 
#                   0.00000000e+00  0.00000000e+00  0.00000000e+00]

这是直截了当的(正是 np.infs)并且不需要使用 逻辑非 ~.