我有一个定义的函数:
def makeRandomList (values) :
length = len(values)
new_list = []
for i in range(length) :
random_num = random.randint(0, length-1)
new_list.append(values[random_num]*1.0) #take random samples
return new_list
应该只从输入数组values
中取一些样本。我已经导入了一个.csv电子表格这样的数组。出现两个问题:
['0', '0']
['1.200408', '29629.0550890999947']
['2.438112', '322162.385751669993']
['3.443816', '511142.915559189975']
['4.500272', '703984.472568470051']
['5.505976', '579295.304300419985']
['6.562432', '703984.472568470051']
['7.568136', '579295.304300419985']
['8.624592', '703984.472568470051']
我通过这些方式知道:
import csv
with open('ThruputCSV.csv') as csvfile:
readCSV = csv.reader(csvfile, delimiter = ',')
v = []
for row in readCSV:
print(row)
使用print(row)
而不是键入v.append(row[1])
时,生成的v看起来像这样:
['',
'0',
'29629.0550890999947',
'322162.385751669993',
'511142.915559189975',
'703984.472568470051',
'579295.304300419985',
'703984.472568470051',
'579295.304300419985',
'703984.472568470051']
对第一个条目是否正确?为什么第一个条目为空?
makeRandomList
函数给出v作为values
参数抛出错误:不能将序列乘以float 我无法弄清楚错误是什么 - 对我而言v似乎是一个包含浮点值的数组。这应该没问题,因为错误发生在这一行:new_list.append(values[random_num]*1.0)
其中random_num
,一些整数值,只给出了我想要访问的v数组的索引。这是否意味着我不允许将append
与包含浮点变量的数组一起使用?
答案 0 :(得分:0)
您正在阅读错误的错误...它不是浮动值,这是一个问题
错误是说'序列'不能乘以浮点数。浮点数和整数可以相互增加。序列不能迭代并乘以浮点数或整数。
实际问题是您的数组值是字符串。注意'在他们每个人周围。那些被认为是序列。将它们转换为浮点数,您的代码就可以运行。
for i in range(length) :
random_num = random.randint(0, length-1)
new_list.append(float(values[random_num])*1.0)
修改强> 有人指出,我原来说序列不能乘以浮点数或整数。澄清。序列数组不能通过AND迭代并且同时乘以int / float。如果只是将整个序列乘以int,它将复制数组中的所有元素。在某些情况下有用的知识,但仍然无法解决这一特定问题。