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

时间:2014-07-21 20:50:17

标签: 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()但它只会导致错误。

4 个答案:

答案 0 :(得分:6)

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

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

编辑:它被称为广播,顺便说一句http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html

答案 1 :(得分:1)

最简单的方法是使用递减/递增操作符

A -= 1

这适用于整个阵列。如果你可以使用numpy数组及其强大的广播功能,那么循环就会变慢。但要注意,许多numpy例程不能在列表上工作,因为它们没有将它们转换为数组。这可能是numpy.substract()无效的原因。

答案 2 :(得分:0)

你可以"映射"使用apply map函数遍历列表中的函数:

>>> 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,依此类推。

答案 3 :(得分:0)

如果你想在原地进行,那么你需要一个for循环:

for i in range(len(column)):
   column[i] = column[i] - 1.0
相关问题