首页 > 解决方案 > 在 if 条件下使用 numpy 数组会导致问题,如何解决?

问题描述

我想用“if else”条件测试“z”的每一个元素并返回所需的方程。我的实现导致错误。我尝试了“z.all”和“z.any”函数,但这两个函数将“z”转换为布尔数组。我不希望 z 作为布尔数组。我该怎么做,而 z 仍然是一个 numpy 数组?

z 是一个numpy 数组,其形状为(10610, ))

    def function(z):
        alpha = 1
        if (z < 0):
            return -alpha * z
        elif (0 <= z <= 1):
            return (3 * z ** 3) - (4 * z ** 2) + (2 * z)
        else:
            return z

标签: pythonarraysnumpy

解决方案


您可以numpy.where用于以下两个条件:

np.where(
    z < 0,
    -alpha * z,
    np.where(
        z <= 1,
        (3 * z ** 3) - (4 * z ** 2) + (2 * z),
        z))

推荐阅读