我有一个csv文件,我可以访问其中一个列。比如我有:
A
2.5
3.5
4.5
5.5
等
我想要做的是将A中的所有条目减去1.0,使其成为:
B
1.5
2.5
3.5
4.5
关于我如何做到的任何想法?我尝试了numpy.subtract()但它只会导致错误。
答案 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