Nên là một câu hỏi đơn giản, nhưng tôi không thể tìm thấy câu trả lời ở bất cứ đâu. Toán tử ~
trong python được viết thành một toán tử đảo ngược bitwise. Khỏe. Tôi đã nhận thấy hành vi dường như tâm thần phân liệt tuy nhiên, để wit:python tilde unary operator dưới dạng phủ định mảng bool numpy
~True -> -2
~1 -> -2
~False -> -1
~0 -> -1
~numpy.array([True,False],dtype=int) -> array([-2,-1])
~numpy.array([True,False],dtype=bool) -> array([False,True])
Trong 4 ví dụ đầu tiên, tôi có thể nhìn thấy trăn rằng đang triển khai (như tài liệu) ~x = -(x+1)
, với đầu vào xử lý như một int ngay cả khi nó boolean . Do đó, đối với một boolean vô hướng, ~
không được coi là phủ định logic. Không phải là hành vi là giống hệt nhau trên một mảng numpy được xác định với các giá trị boolean bởi với một loại int.
Tại sao ~
sau đó hoạt động như toán tử phủ định hợp lý trên mảng boolean (Cũng chú ý: ~numpy.isfinite(numpy.inf) -> True
?)?
Điều cực kỳ khó chịu là tôi phải sử dụng not()
trên vô hướng, nhưng not()
sẽ không hoạt động để phủ nhận một mảng. Sau đó cho một mảng, tôi phải sử dụng ~
, nhưng ~
sẽ không làm việc để phủ nhận một vô hướng ...
Cảm ơn vì lý do giải thích, và đặc biệt là để đề cập đến '&' và '|'. Tôi không biết về những cái đó, và thay vào đó đã sử dụng logical_and và logical_or. –
Tôi đang sử dụng 'numpy' cho các lứa tuổi và cho đến bây giờ không biết mục đích của những cấu trúc dường như được định nghĩa lại nhưng được gạch chân như' np.False_'. Điều này tất cả có ý nghĩa bây giờ – dashesy