判断语句中 'int' object has no attribute 'all'

做敏感性分析画拟合图

fig = plt.figure()
ax = Axes3D(fig)
X = np.arange(0, 0.3, 0.01)
Y = np.arange(-0.3, 0, 0.01)
X, Y = np.meshgrid(X, Y)

def Z(X, Y):
    return repayment(X, Y)

ax.plot_surface(X, Y, Z(X, Y), label='Payback Period', rstride=1, cstride=1, cmap='rainbow')

repayment()函数里面有一个判断语句,如果用if I==0:时会报错ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()。而使用if I.all()==0:时会报错AttributeError: 'int' object has no attribute 'all'

请问该如何解决呢?

l是什么类型啊

X,Y是一个numpy.ndarray ,repayment函数中的I是怎么来的值呢,x数组或Y数组中的一个吗.all() 或者any()只适用于numpy.ndarray类型的数据.最好能把你的repayment函数代码粘贴一下

题中的判断条件,使用了标量(一个整数)调用all方法当然会报错,要么将I写成一个一维数组,要么用append方法将I形成列表,在判断条件中写 if all(I),其参数需是可迭代对象。

在你纠结I为什么报错之前,先打印你的tr和tc,你以为传入的是两个int,其实根本不是
如果这个问题不解决,你无论如何瞎折腾,即使最终不报错了,那结果肯定不是你预期的