Saya memiliki skrip yang membaca file teks, menarik angka desimal dari itu sebagai string dan menempatkannya ke dalam daftar.
Jadi saya punya daftar ini:
['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']
Bagaimana cara mengubah setiap nilai dalam daftar dari string ke float?
Saya telah mencoba:
for item in list:
float(item)
Tapi ini sepertinya tidak berhasil untukku.
list
sebagai nama variabel akan membayangilist
konstruktorJawaban:
tepatnya, itu membuat daftar baru dengan nilai float. Berbeda dengan
map
pendekatan itu akan bekerja di py3k.sumber
np.array(inp_list, dtype=np.float32)
. Anda bahkan tidak perlu menentukan apakah itu pelampung dan hanya menggunakan:np.array(inp_list)
[float(i) for i in lst]
sesuatu. Misalnya:new_list = [float(i) for i in lst]
map(float, mylist)
harus melakukannya.(Dalam Python 3, peta berhenti mengembalikan objek daftar, jadi jika Anda ingin daftar baru dan bukan hanya sesuatu untuk diulangi, Anda perlu
list(map(float, mylist)
- atau menggunakan jawaban SilentGhost yang bisa dibilang lebih pythonic.)sumber
float(item)
lakukan hal yang benar: ia mengubah argumennya menjadi mengambang dan mengembalikannya, tetapi itu tidak mengubah argumen di tempat. Perbaikan sederhana untuk kode Anda adalah:Kode yang sama dapat ditulis lebih pendek menggunakan pemahaman daftar:
new_list = [float(i) for i in list]
Untuk mengubah daftar di tempat:
BTW, hindari menggunakan
list
untuk variabel Anda, karena menyamar fungsi built-in dengan nama yang sama.sumber
Ini akan menjadi metode lain (tanpa menggunakan loop apa pun!):
sumber
Anda bahkan dapat melakukan ini dengan numpy
ini mengembalikan np array daftar Anda sebagai float
Anda juga dapat mengatur 'dtype' sebagai int
sumber
Anda dapat menggunakan numpy untuk mengonversi daftar langsung ke array atau matriks mengambang.
Jika Anda ingin mengonversi bilangan bulat bilangan ke larik mengambang, maka tambahkan 0. ke dalamnya
sumber
Inilah yang akan saya lakukan.
sumber
yang menampilkan jenis sebagai daftar string. Anda dapat mengonversi daftar ini menjadi array float secara bersamaan menggunakan numpy:
sumber
Saya harus mengekstraksi angka terlebih dahulu dari daftar string float:
lalu setiap konversi menjadi float:
pada akhirnya tetapkan semua float ke dataframe sebagai float64:
sumber
Saya telah memecahkan masalah ini dalam program saya menggunakan:
sumber
sumber