Python 为列中的每个元素减去一个数字

Python 为列中的每个元素减去一个数字,python,numpy,Python,Numpy,我有一个csv文件,可以访问其中一列。例如,我有: A 2.5 3.5 4.5 5.5 等等 我想做的是将A中的所有条目减去1.0,使其成为: B 1.5 2.5 3.5 4.5 我怎么做有什么想法吗?我尝试了numpy.subtract(),但它只会导致错误。您可以使用应用命名函数在列表中“映射”函数: >>> A = [2.5, 3.5, 4.5, 5.5] >>> B = map(lambda x: x-1., A) >>> B [

我有一个csv文件,可以访问其中一列。例如,我有:

A
2.5
3.5
4.5
5.5
等等

我想做的是将A中的所有条目减去1.0,使其成为:

B
1.5
2.5
3.5
4.5
我怎么做有什么想法吗?我尝试了numpy.subtract(),但它只会导致错误。

您可以使用应用命名函数在列表中“映射”函数:

>>> A = [2.5, 3.5, 4.5, 5.5]
>>> B = map(lambda x: x-1., A)
>>> B
[1.5, 2.5, 3.5, 4.5]
>>>
其中,
lambda x:x-1
是应用了
A
所有元素的匿名函数。对于
2.5
函数返回
2.5-1
,对于
3.5
函数返回
3.5-1
,依此类推

您可以使用应用命名函数在列表中“映射”函数:

>>> A = [2.5, 3.5, 4.5, 5.5]
>>> B = map(lambda x: x-1., A)
>>> B
[1.5, 2.5, 3.5, 4.5]
>>>

其中,
lambda x:x-1
是应用了
A
所有元素的匿名函数。对于
2.5
函数返回
2.5-1
,对于
3.5
函数返回
3.5-1
,依此类推

如果你有一个numpy数组,你可以从数组中减去一个常量,如:

>>> A = numpy.array([2.5, 3.5, 4.5, 5.5])
>>> A-1
array([ 1.5,  2.5,  3.5,  4.5])

编辑:这叫做广播,顺便说一句,如果你有一个numpy数组,你可以从数组中减去一个常数,如:

>>> A = numpy.array([2.5, 3.5, 4.5, 5.5])
>>> A-1
array([ 1.5,  2.5,  3.5,  4.5])

编辑:这叫做广播,顺便说一句,如果你想在适当的地方进行,那么你需要一个for循环:

for i in range(len(column)):
   column[i] = column[i] - 1.0

如果要就地执行,则需要for循环:

for i in range(len(column)):
   column[i] = column[i] - 1.0

最简单的方法是使用减量/增量运算器

A -= 1

这适用于整个阵列。如果你能用numpy阵列和它们强大的广播功能来做一些事情的话,循环会变得很慢。但请注意,许多numpy例程在列表上不起作用,因为它们没有将列表转换为数组。这可能就是numpy.substract()不起作用的原因。

最简单的方法是使用减量/增量运算器

A -= 1

这适用于整个阵列。如果你能用numpy阵列和它们强大的广播功能来做一些事情的话,循环会变得很慢。但请注意,许多numpy例程在列表上不起作用,因为它们没有将列表转换为数组。这可能就是numpy.substract()不起作用的原因。

您应该避免执行
range(len(column))
,因为这可能会导致一个错误。您可以对i执行
,枚举(列)中的数据:
以始终正确。如果我能提供帮助,我总是尝试使用列表理解而不是循环:
B=[x-1代表A中的x]
针对列中的i:
将为您提供列表的元素,而不是索引。至少在enumerate(列)中为i,x使用enumerate:
您应该避免使用
range(len(列))
,因为这可能导致一个错误。您可以对i执行
,枚举(列)中的数据:
以始终正确。如果我能提供帮助,我总是尝试使用列表理解而不是循环:
B=[x-1代表A中的x]
针对列中的i:
将为您提供列表的元素,而不是索引。对于枚举(列)中的i,x至少使用枚举:
请显示您的代码,包括您读取CSV文件的部分,以及您得到的错误。很难说问题是数据格式(CSV读取问题)还是您使用
numpy.subtract
的方式。请显示您的代码,包括读取CSV文件的部分,以及出现的错误。很难说问题是数据格式(CSV读取问题)还是使用
numpy.subtract
的方式。