如何在python中访问包含float变量的数组

时间:2018-05-18 13:27:44

标签: python

我有一个定义的函数:

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电子表格这样的数组。出现两个问题:

  1. 数组应如下所示:
  2. ['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']
    

    对第一个条目是否正确?为什么第一个条目为空?

    1. 现在,在运行代码时(如果您感兴趣,它已经由一个用户here分发),makeRandomList函数给出v作为values参数抛出错误:不能将序列乘以float
    2. 类型的非int

      我无法弄清楚错误是什么 - 对我而言v似乎是一个包含浮点值的数组。这应该没问题,因为错误发生在这一行:new_list.append(values[random_num]*1.0)其中random_num,一些整数值,只给出了我想要访问的v数组的索引。这是否意味着我不允许将append与包含浮点变量的数组一起使用?

1 个答案:

答案 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,它将复制数组中的所有元素。在某些情况下有用的知识,但仍然无法解决这一特定问题。