Python 如果使用numpy数组会导致问题,如何解决?

Python 如果使用numpy数组会导致问题,如何解决?,python,arrays,numpy,Python,Arrays,Numpy,我想用“if-else”条件测试“z”的每个元素,并返回所需的等式。我的实现产生了一个错误。我尝试了“z.all”和“z.any”函数,但这两个函数正在将“z”转换为布尔数组。我不希望z作为布尔数组。当z仍然是一个numpy数组时,我如何做到这一点 z是一个小数组,它的形状是(10610,) def function(z): alpha = 1 if (z < 0): return -alpha * z eli

我想用“if-else”条件测试“z”的每个元素,并返回所需的等式。我的实现产生了一个错误。我尝试了“z.all”和“z.any”函数,但这两个函数正在将“z”转换为布尔数组。我不希望z作为布尔数组。当z仍然是一个numpy数组时,我如何做到这一点

z是一个小数组,它的形状是(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
def函数(z):
α=1
如果(z<0):
返回-α*z
elif(0可用于两种情况:

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

z如果我理解正确,您希望将函数应用于数组z中的所有元素,对吗?如果是这样,您可能希望研究numpys函数

对于您的代码:

vfunc = np.vectorize(function)
z = vfunc(z)
如果速度和效率很重要,您可以在比较不同方法时参考其他答案。

使用:

def函数(z):
α=1
m=(z<0)
z[m]=-alpha*z[m]

m=((z>=0)和(z你能详细解释一下为什么
any
all
方法不可接受吗?@Brian z正在存储数字以供以后使用。我想单独将每个元素输入if-else。当我使用
any
all
时,每个元素都变成了“1”或“0”。这是不是导致了一个错误?什么错误提供整个错误消息,以及一个。
def function(z):
    alpha = 1

    m = (z < 0)
    z[m] = -alpha * z[m]

    m = ((z >= 0) & (z <= 1))
    z[m] = (3 * z[m] ** 3) - (4 * z[m] ** 2) + (2 * z[m])

    return z