我有一个脚本,它读取一个文本文件,将十进制数字作为字符串从中提取出来,并将它们放入一个列表中。
所以我有这个清单:
['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
2for item in list:
float(item)
但这似乎对我不起作用。
不要将列表用作变量名。
1[float(i) for i in lst]
准确地说,它创建了一个新的具有浮点值的列表。与map方法不同,它将在py3k中工作。
对于大型阵列,我建议使用numpy:np.array(inp_list, dtype=np.float32)。您甚至不必指定它是不是一个浮点型,只需使用:np.array(inp_list)。
map(float, mylist)应该这样做。
(在python 3中,map不再返回一个list对象,因此如果您想要一个新的列表,而不仅仅是迭代的内容,那么您要么需要list(map(float, mylist),要么使用silentghost的答案,可以说它更像pythonic。)
float(item)做了正确的事情:它将其参数转换为float并返回它,但它不会在适当的位置改变参数。代码的一个简单修复方法是:
1
2
3new_list = []
for item in list:
new_list.append(float(item))
号
同样的代码可以通过列表理解来缩短编写时间:new_list = [float(i) for i in list]。
要就地更改列表:
1
2for index, item in enumerate(list):
list[index] = float(item)
顺便说一句,避免对变量使用list,因为它伪装成具有相同名称的内置函数。
对不起,我不明白这里的意思。它与以前的Python式的答案有什么不同?前一个答案中的转换"[float(i)for i in lst]是否保留原始列表索引?
@aai更改原始列表而不是创建新列表。
这将是另一种方法(不使用任何循环!):
1
2import numpy as np
list(np.float_(list_name))
。
如果您希望将np.array保留为np.array=,则无需再次将np.array强制转换到列表中。
可以使用numpy将列表直接转换为浮动数组或矩阵。
1
2
3import numpy as np
list_ex = [1, 0] # This a list
list_int = np.array(list_ex) # This is a numpy integer array
。
如果要将整数数组转换为浮动数组,请添加0。对它
1list_float = np.array(list_ex) + 0. # This is a numpy floating array
你甚至可以麻木地做这件事
1
2import numpy as np
np.array(your_list,dtype=float)
。
此函数将列表的np数组返回为float
还可以将"dtype"设置为int
我就是这样做的。
1
2
3
4
5
6my_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
my_list = [float(i) for i in my_list]
print type(my_list[0]) # prints
。
1for i in range(len(list)): list[i]=float(list[i])
号
我必须先从浮点数列表中提取数字:
1df4['sscore'] = df4['simscore'].str.findall('\d+\.\d+')
号
然后每个转换为一个浮点:
1
2
3ad=[]
for z in range(len(df4)):
ad.append([float(i) for i in df4['sscore'][z]])
号
最后,将所有浮点分配给数据帧作为float64:
1df4['fscore'] = np.array(ad,dtype=float)
号
我在程序中使用以下方法解决了这个问题:
1
2number_input = float("{:.1f}".format(float(input())))
list.append(number_input)
操作说明他正在从文本文件中读取。这个答案不适用于所问的问题。
1
2
3
4
5import 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]))
#
。
它将类型显示为字符串列表。可以使用numpy将此列表同时转换为一个浮点数组:
1
2
3
4my_list = np.array(my_list).astype(np.float)
print(type(my_list), type(my_list[0]))
#