在 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
作为替代方法,如果确定我们只有 inf
s(不是 nan
s),还有另一个 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.inf
s)并且不需要使用 逻辑非 ~
.
我想在矩阵 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
作为替代方法,如果确定我们只有 inf
s(不是 nan
s),还有另一个 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.inf
s)并且不需要使用 逻辑非 ~
.