In Python, how do I convert all of the items in a list to floats?
我有一个脚本,它读取一个文本文件,将十进制数字作为字符串从中提取出来,并将它们放入一个列表中。
所以我有这个清单:
['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']
号
如何将列表中的每个值从字符串转换为浮点值?
我尝试过:
1 2 | for item in list: float(item) |
但这似乎对我不起作用。
1 | [float(i) for i in lst] |
准确地说,它创建了一个新的具有浮点值的列表。与
(在python 3中,map不再返回一个list对象,因此如果您想要一个新的列表,而不仅仅是迭代的内容,那么您要么需要
1 2 3 | new_list = [] for item in list: new_list.append(float(item)) |
号
同样的代码可以通过列表理解来缩短编写时间:
要就地更改列表:
1 2 | for index, item in enumerate(list): list[index] = float(item) |
顺便说一句,避免对变量使用
这将是另一种方法(不使用任何循环!):
1 2 | import numpy as np list(np.float_(list_name)) |
。
可以使用numpy将列表直接转换为浮动数组或矩阵。
1 2 3 | import numpy as np list_ex = [1, 0] # This a list list_int = np.array(list_ex) # This is a numpy integer array |
。
如果要将整数数组转换为浮动数组,请添加0。对它
1 | list_float = np.array(list_ex) + 0. # This is a numpy floating array |
你甚至可以麻木地做这件事
1 2 | import numpy as np np.array(your_list,dtype=float) |
。
此函数将列表的np数组返回为float
还可以将"dtype"设置为int
我就是这样做的。
1 2 3 4 5 6 | my_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'] print type(my_list[0]) # prints <type 'str'> my_list = [float(i) for i in my_list] print type(my_list[0]) # prints <type 'float'> |
。
1 | for i in range(len(list)): list[i]=float(list[i]) |
号
我必须先从浮点数列表中提取数字:
1 | df4['sscore'] = df4['simscore'].str.findall('\d+\.\d+') |
号
然后每个转换为一个浮点:
1 2 3 | ad=[] for z in range(len(df4)): ad.append([float(i) for i in df4['sscore'][z]]) |
号
最后,将所有浮点分配给数据帧作为float64:
1 | df4['fscore'] = np.array(ad,dtype=float) |
号
我在程序中使用以下方法解决了这个问题:
1 2 | number_input = float("{:.1f}".format(float(input()))) list.append(number_input) |
1 2 3 4 5 | import numpy as np my_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'] print(type(my_list), type(my_list[0])) # <class 'list'> <class 'str'> |
。
它将类型显示为字符串列表。可以使用numpy将此列表同时转换为一个浮点数组:
1 2 3 4 | my_list = np.array(my_list).astype(np.float) print(type(my_list), type(my_list[0])) # <class 'numpy.ndarray'> <class 'numpy.float64'> |