如何在理解力中正确使用算术运算符?
How to Properly Use Arithmetic Operators Inside Comprehensions?
我正在处理一个简单的 csv 文件,其中包含三列和三行包含数字数据。 csv 数据文件如下所示:
Col1,Col2,Col3
1,2,3
2,2,3
3,2,3
4,2,3
我很难弄清楚如何让我的 python 程序从同一列中的每个值中减去第一列 "Col1" 的平均值。为了说明,输出应为 'Col1' 提供以下值:
1 - 2.5 = -1.5
2 - 2.5 = -0.5
3 - 2.5 = 0.5
4 - 2.5 = 1.5
这是我的尝试,给出了 (TypeError: unsupported operand type(s) for -: 'str' and 'float'
) 在包含理解的最后一个打印语句中。
import csv
# Opening the csv file
file1 = csv.DictReader(open('columns.csv'))
file2 = csv.DictReader(open('columns.csv'))
# Do some calculations
NumOfSamples = open('columns.csv').read().count('\n')
SumData = sum(float(row['Col1']) for row in file1)
Aver = SumData/(NumOfSamples - 1) # compute the average of the data in 'Col1'
# Subtracting the average from each value in 'Col1'
data = []
for row in file2:
data.append(row['Col1'])
# Print the results
print Aver
print [e-Aver for e in data] # trying to use comprehension to subtract the average from each value in the list 'data'
我不知道如何解决这个问题!知道如何使理解工作给出应该做什么吗?
您的代码中的问题是,在 data
list (file2
) 的情况下,您正在从文件中读取字符串并将字符串存储到 data
列表中。
因此,稍后,您尝试执行 - [e-Aver for e in data]
- 当您尝试从字符串中减去浮点数时会出错。
在存储到 data
列表之前,您应该转换为 float
或 int
。示例 -
data = []
for row in file2:
data.append(float(row['Col1']))
您没有将 Col1
值从字符串转换为 float()
。您可以在阅读时(如下所示)或在列表理解中进行转换。
data = []
for row in file2:
data.append(float(row['Col1']))
# Print the results
print Aver
print [e - Aver for e in data]
我正在处理一个简单的 csv 文件,其中包含三列和三行包含数字数据。 csv 数据文件如下所示:
Col1,Col2,Col3
1,2,3
2,2,3
3,2,3
4,2,3
我很难弄清楚如何让我的 python 程序从同一列中的每个值中减去第一列 "Col1" 的平均值。为了说明,输出应为 'Col1' 提供以下值:
1 - 2.5 = -1.5
2 - 2.5 = -0.5
3 - 2.5 = 0.5
4 - 2.5 = 1.5
这是我的尝试,给出了 (TypeError: unsupported operand type(s) for -: 'str' and 'float' ) 在包含理解的最后一个打印语句中。
import csv
# Opening the csv file
file1 = csv.DictReader(open('columns.csv'))
file2 = csv.DictReader(open('columns.csv'))
# Do some calculations
NumOfSamples = open('columns.csv').read().count('\n')
SumData = sum(float(row['Col1']) for row in file1)
Aver = SumData/(NumOfSamples - 1) # compute the average of the data in 'Col1'
# Subtracting the average from each value in 'Col1'
data = []
for row in file2:
data.append(row['Col1'])
# Print the results
print Aver
print [e-Aver for e in data] # trying to use comprehension to subtract the average from each value in the list 'data'
我不知道如何解决这个问题!知道如何使理解工作给出应该做什么吗?
您的代码中的问题是,在 data
list (file2
) 的情况下,您正在从文件中读取字符串并将字符串存储到 data
列表中。
因此,稍后,您尝试执行 - [e-Aver for e in data]
- 当您尝试从字符串中减去浮点数时会出错。
在存储到 data
列表之前,您应该转换为 float
或 int
。示例 -
data = []
for row in file2:
data.append(float(row['Col1']))
您没有将 Col1
值从字符串转换为 float()
。您可以在阅读时(如下所示)或在列表理解中进行转换。
data = []
for row in file2:
data.append(float(row['Col1']))
# Print the results
print Aver
print [e - Aver for e in data]