Tôi muốn kiểm tra xem biến là None hay numpy.array. Tôi đã triển khai check_achứ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 notcố 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 ifcố gắng sử dụng mảng bị phủ định như một boolean duy nhất.
ValueErrorlà một trong nhữngnumpycâu hỏi phổ biến nhất . Nó có nghĩa lànot atạ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 Nonethay thế là tốt để biết, nhưng bạn cũng nên hiểu lỗi này.