Używam Scilaba i chcę przekonwertować tablicę wartości logicznych na tablicę liczb całkowitych:
>>> x = np.array([4, 3, 2, 1])
>>> y = 2 >= x
>>> y
array([False, False, True, True], dtype=bool)
W Scilabie mogę użyć:
>>> bool2s(y)
0. 0. 1. 1.
lub nawet pomnóż to przez 1:
>>> 1*y
0. 0. 1. 1.
Czy jest do tego proste polecenie w Pythonie, czy musiałbym użyć pętli?
Odpowiedzi:
Tablice Numpy mają
astype
metodę. Po prostu zróby.astype(int)
.Zwróć uwagę, że może to nawet nie być konieczne, w zależności od tego, do czego używasz tablicy. W wielu przypadkach Bool zostanie automatycznie przeniesiony do int, więc możesz dodać go do tablic int bez konieczności jawnej konwersji:
źródło
1*y
Metoda działa w NumPy też:Jeśli pytasz o sposób na konwersję list Pythona z Boolean na int, możesz
map
to zrobić:Lub używając list składanych:
źródło
y = 1 if x else 0
jest to to samoy = 1 if x>0 else 0
i to samo coif x: y = 1 ""NEXT LINE"" else: y = 0
.... jak nauczyłeś się tych sztuczek, nie widziałem tego w dokumentacji instrukcji if ?y=1 if x else 0
to nie to samo coy=1 if x>0 else 0
, ponieważ ta ostatnia nie bierze pod uwagę liczb ujemnych. To jest właśnie to, co Python definiuje jakoTrue
lubFalse
, wszystko to znajduje się w dokumentacji.Używając numpy, możesz:
Jeśli używasz tablicy innej niż numpy, możesz użyć rozumienia listowego :
źródło
W większości przypadków nie potrzebujesz konwersji:
Właściwy sposób to:
lub
źródło
Wiem, że prosiłeś o rozwiązania niezwiązane z zapętleniem, ale jedyne rozwiązania, które mogę wymyślić, prawdopodobnie i tak zapętlają się wewnętrznie:
lub:
lub:
źródło
Zabawnym sposobem na to jest
źródło