将数组传入函数并进行遍历,为何用来遍历的元素变成了整个数组

将数组传入函数并进行遍历,arr是np.array数组,t是数字

相关代码

def timereduce(arr,t):
    print(arr)
    for q in arr:
        q-=t
        if q<0:
            q=0
    print(q)
    return arr

报错:ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
我输出q,发现q变成了整个数组,这是为什么

阅读 5.6k
3 个回答
Use a.any() or a.all()

已经给你提示了,用 any 或 all 去操作arr
不要在遍历的过程中改变arr元素的值,效率太低 。

有点看不懂您的问题.
不过就单从代码来看.
您代码中临时变量q,只会打印最后一次循环时的结果,应该是arr数组中最后一个元素与数字t的差值(若小于0,那么就0).
最后,将原数组arr返回,注意是原数组,因为代码中并没有对原数组进行任何修改.
就这个函数来说,是不会报错的.
是否存在其他变量冲突或者其他问题?请多检查下吧

def timereduce(arr, t):
    return [max(q-t, 0) for q in arr]
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题