我有代码检查列表是否为空
end_reg = np.argmin(vals_reg)
print(end_reg)
print("vals_reg[:end_reg]")
print(vals_reg[:end_reg])
if not vals_reg[:end_reg]:
start_reg = np.argmax(vals_reg)
end_reg = np.argmin(vals_reg[start_reg:]) + start_reg
else:
start_reg = np.argmax(vals_reg[:end_reg])
我得到了这样的打印,所以似乎数组和一切都没问题。检查空虚失败
5
vals_reg[:end_reg]
[ 24844. 34973. 33538. 31136. 28258.]
我得到以下错误:
if not vals_reg[:end_reg]:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
答案 0 :(得分:0)
错误似乎很明显。 Numpy拒绝判断数组vals_reg[:end_reg]
或任何数组是否应该被解释为True
或False
,因为Numpy的创造者认为它是模糊的(这是真的) ;所有False
的数组可能更自然地被归类为False
,而不是True
,因为它是非空的。)
当且仅当列表为空时,Python已决定将列表分类为False,因为Python的创建者认为非常明显且有用,但这不是Python列表,而是Numpy数组。
你用非模棱两可的术语实际问的是数组是否为空。您可以使用数组方法/属性执行此操作:
How can I check whether the numpy array is empty or not?
即
vals_reg[:end_reg].size == 0
是你想要的测试。