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