python - 在数值函数中包含逻辑

标签 python numpy scipy

我认为/希望这个问题有一个简单的答案,但恐怕到目前为止它都在暗示我。

我想实现以下功能,包括逻辑:

def my_func(x):
    if x < 5:
        return 2
    else:
        return 2*x        

因此,当将 my_x = np.arange(1,10,1) 形式的数组传递给它时:

y = my_func(my_x)

结果是: y = [2, 2, 2, 2, 10, 12, 14, 18]

我想这可以通过函数中的 for 循环来完成,将每个元素的结果附加回某种形式的 RESULT 数组,但这似乎有点笨拙。

请问有更好的方法吗?

最佳答案

如果您知道您的函数将传递一个 numpy 数组,您可以使用 numpy 函数编写它,以矢量化方式执行您想要的操作:

def my_np_func(x):
    return np.where(x<5, 2, 2*x)

您还可以对原始函数进行矢量化并应用它:

np.vectorize(my_func)(x)

但这可能会更慢,因为该函数将被调用多次而不是一次。

关于python - 在数值函数中包含逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23896083/

相关文章:

python - 球体体积内点的规则分布

macos - 在 Mac OS Lion 上为 Python3 构建 numpy/scipy

python - 如何根据pandas中的某些条件创建row_number

python - 带有值的多索引数据框的字典列表列表

python - LightGBM 忽略关于 "boost_from_average"的警告

python - 二维线性插值产生数据范围之外的结果

python - 如何在Python中计算非常小的数字的二项式概率?

python - 有界/极限的编辑距离

python - 将 100x9 广播到 100x9x1x1 numpy 数组以在 Caffe 中进行计算的正确方法

python - PyData 生态系统