Tôi muốn kiểm tra xem biến là None hay numpy.array. Tôi đã triển khai check_a
chức năng để làm điều này.
def check_a(a):
if not a:
print "please initialize a"
a = None
check_a(a)
a = np.array([1,2])
check_a(a)
Tuy nhiên, mã này làm tăng ValueError. Con đường thẳng tiến là gì?
ValueError Traceback (most recent call last)
<ipython-input-41-0201c81c185e> in <module>()
6 check_a(a)
7 a = np.array([1,2])
----> 8 check_a(a)
<ipython-input-41-0201c81c185e> in check_a(a)
1 def check_a(a):
----> 2 if not a:
3 print "please initialize a"
4
5 a = None
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
not
, vì vậy lỗi thực sự xảy ra khi not
cố gắng xử lý mảng như một boolean duy nhất và phát hiện ra nó không thể. Nếu đúng như vậy ~a
, điều đó sẽ sử dụng quá tải của NumPy và không thành công khi if
cố gắng sử dụng mảng bị phủ định như một boolean duy nhất.
ValueError
là một trong nhữngnumpy
câu hỏi phổ biến nhất . Nó có nghĩa lànot a
tạo ra một mảng boolean, với (trong trường hợp này) 2 giá trị. Mảng boolean này không thể được sử dụng như mộtif
điều kiện! Cácis None
thay thế là tốt để biết, nhưng bạn cũng nên hiểu lỗi này.