Mam skrypt, który odczytuje plik tekstowy, wyciąga z niego liczby dziesiętne jako ciągi znaków i umieszcza je na liście.
Mam więc tę listę:
['0.49', '0.54', '0.54', '0.54', '0.54', '0.54', '0.55', '0.54', '0.54', '0.54',
'0.55', '0.55', '0.55', '0.54', '0.55', '0.55', '0.54', '0.55', '0.55', '0.54']
Jak przekonwertować każdą z wartości z listy z ciągu na zmiennoprzecinkowe?
Próbowałem:
for item in list:
float(item)
Ale to chyba nie działa dla mnie.
list
jako nazwy zmiennej spowoduje cień wbudowanegolist
konstruktora, a tym samym nie pozwoli na użycie tego w tym samym zakresieOdpowiedzi:
mówiąc dokładniej, tworzy nową listę z wartościami zmiennoprzecinkowymi. W przeciwieństwie do
map
podejścia będzie działać w py3k.źródło
np.array(inp_list, dtype=np.float32)
. Nie musisz nawet określać, czy jest to liczba zmiennoprzecinkowa, i po prostu użyj:np.array(inp_list)
[float(i) for i in lst]
coś przypisać . Np .:new_list = [float(i) for i in lst]
map(float, mylist)
powinien to zrobić.(W Pythonie 3 mapa przestaje zwracać obiekt listy, więc jeśli chcesz nowej listy, a nie tylko czegoś do iteracji, albo potrzebujesz
list(map(float, mylist)
- albo skorzystaj z odpowiedzi SilentGhost, która jest prawdopodobnie bardziej pythoniczna).źródło
float(item)
postępuj właściwie: konwertuje argument na zmiennoprzecinkowy i zwraca go, ale nie zmienia argumentu na miejscu. Prosta poprawka dla twojego kodu to:Ten sam kod można napisać krócej przy użyciu listy:
new_list = [float(i) for i in list]
Aby zmienić listę w miejscu:
BTW, unikaj używania
list
zmiennych, ponieważ maskuje to wbudowaną funkcję o tej samej nazwie.źródło
To byłaby inna metoda (bez użycia żadnej pętli!):
źródło
możesz to zrobić nawet przez numpy
zwraca tablicę np z listy jako float
możesz również ustawić „dtype” jako int
źródło
Możesz użyć numpy do konwersji listy bezpośrednio na zmienną tablicę lub macierz.
Jeśli chcesz przekonwertować tablicę liczb całkowitych na tablicę pływającą, dodaj do niej 0.
źródło
Tak bym to zrobił.
źródło
który wyświetla typ jako listę ciągów. Możesz przekonwertować tę listę na tablicę pływaków jednocześnie, używając numpy:
źródło
Musiałem najpierw wyodrębnić liczby z listy ciągów pływających:
następnie każda konwersja na liczbę zmiennoprzecinkową:
na koniec przypisz wszystkie zmiennoprzecinkowe do ramki danych jako float64:
źródło
Rozwiązałem ten problem w moim programie, używając:
źródło
źródło