繁体   English   中英

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

[英]Subtracting a number for each element in a column

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

A
2.5
3.5
4.5
5.5

等等

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

B
1.5
2.5
3.5
4.5

关于如何做到的任何想法? 我尝试了numpy.subtract(),但这只会导致错误。

如果您有一个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

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

A -= 1

这适用于整个数组。 如果您可以使用numpy数组及其强大的广播功能执行操作,则循环只会减慢速度。 但是请注意,许多numpy例程不适用于列表,因为它们没有将其转换为数组。 这可能是numpy.substract()无法正常工作的原因。

您可以使用apply named 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 ,依此类推。

如果要就地执行此操作,则需要一个for循环:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM