如何在 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. 数组应如下所示:

['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) 

当不使用v.append(row[1])键入print(row)时,生成的 v 如下所示:

['',
'0',
'29629.0550890999947',
'322162.385751669993',
'511142.915559189975',
'703984.472568470051',
'579295.304300419985',
'703984.472568470051',
'579295.304300419985',
'703984.472568470051']

第一个条目的正确 expt 是什么? 为什么第一个条目为空?

  1. 现在,当运行代码时(如果您有兴趣,它已由此处的一个用户分发(,将 v 作为values参数的makeRandomList函数抛出错误:无法将序列乘以浮点类型的非整数

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

你读错了那个错误...浮点值不是问题

错误是说"序列"不能乘以浮点数。浮点数和整数可以相互相乘。序列不能迭代并乘以浮点数或整数。

实际问题是数组值是字符串。请注意它们每个人周围的 '。这些被认为是序列。将它们转换为浮点数,您的代码将起作用。

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

最新更新