我读了一个csv文件('空气.csv')并执行了一些操作以除去头(不重要)。然后,我使用dB_a.append(row[1])将这列csv数据放入一个数组中,我可以稍后绘制该数组。在
这个数据是dB数据,我想用简单的等式p=10^(dB/10)将它转换成幂。我是Python新手,所以我不太了解数组、列表等中的操作是如何工作的。我想我需要做一些事情来遍历整个数据集,这是我在for循环中的尝试,但是我仍然收到错误。有什么建议吗?在
谢谢你!在
frequency_a=[]
dB_a=[]
a = csv.reader(open('Air.csv'))
for row in itertools.islice(a, 18, 219):
frequency_a.append(row[0])
dB_a.append(row[1])
#print(frequency_a)
print(dB_a)
for item in dB_a:
power_a = 10**(dB_a/10)
print(power_a)
以@edjaras发布的答案为基础。在
power_a = [10*(db/10) for db in dB_a]
不正确,因为这除以10,然后再乘以相同的。在它应该是:
power_a = [10**(db/10) for db in dB_a]
积分仍然归@Ed Jaras所有
注: 如果你想知道这(列表中的某物)是什么,那就是一个列表理解。它们是python允许的非常优雅的构造。在
基本的意思是[…将这个元素添加到结果中。。对于..我的元素。。在..列表..]中。在
如果你愿意,你甚至可以添加条件句。在
如果你想了解更多,我建议你看看: http://www.secnetix.de/olli/Python/list_comprehensions.hawk
附加: @k-schneider:你可能在一个字符串上做数值运算(除法、幂等),这是因为当导入csv时,字段可以作为字符串导入。 要确保使用的是整数,可以通过执行以下操作将db转换为字符串:
str(db)
在for循环中,item是迭代器,因此需要使用它。所以不是:
使用:
^{pr2}$使用这些数据创建新列表的更好方法是:
编辑:注释中指出的另一个问题是,值是字符串。csv文件本质上是一个文本文件,因此是字符串的集合,而不是整数。您可以使用
int(db)
或float(db)
将它们转换为数值,这取决于您使用的是整数还是浮点数。在编辑2:正如@J.Meijers所指出的,我使用的是乘法而不是求幂——这已经在答案中得到了修正。在
相关问题 更多 >
编程相关推荐