簡體   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