假设一个简单的一维 numpy 数组:
>>> x = np.array([1,3,5,0,3,2])
现在假设我要执行操作 1.0/x
。我可以用 numpy 做到这一点:
>>> 1.0/x
array([ 1. , 0.33333333, 0.2 , inf, 0.33333333,
0.5 ])
这里的问题是原始元素值 0 的无穷大 (inf
) 结果,因为 1.0/0
似乎返回无穷大而不是未定义的行为。
我想提供我自己的自定义值,而不是无穷大,出现这些除以 0 的情况。虽然我知道这可以使用循环来完成,但我想知道是否有适合这种操作的惯用语法。
有一个相关问题here ,但它只处理 if something: (do this) else: (do nothing) 场景,而我的问题是 if something: (do this) else: (do that) 情景。
最佳答案
您以后可以随时对其进行修补:
a = 1.0/x
inf_ind = np.isinf(a)
a[inf_ind] = your_value
或
a[inf_ind] = f(x[inf_ind])
它的优点是不会妨碍优化的 numpy 方法。
关于python - numpy:用于数组划分的简明条件语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14493531/