读取并添加从文本文件

时间:2016-02-01 21:25:05

标签: python equivalence

这是一个例子: 我有四个标记为t = 0,t = 1,t = 2,t = 3的时间段。每次都有一个与之关联的值,如下所示:

文本文件的格式如下:
0213
1,-999
2456个
3,-1100

基本上,每个值都在一个时期内。 我想要做的是使用这些值并获得t = 0的所有值。 如果我绘制一个时间轴,那么在t = 0和t = 2时,我会得到两个正值,在t = 1和t = 3时,负数上有两个值。

现在,我想从时间轴的右侧向左移动到t = 0。因此,在t = 3时,这是时间轴中的最后一个值需要将两个单位向左移动以添加到t = 1的值,因为它们都在负侧,然后最终从t =移动该值1到t = 0。同样,我需要为积极的一面做这件事。

以下是我的代码。这可能不正确,但我正在尝试:

import numpy as np

workspace = 'C:\\Users\MM\Desktop'

time= np.loadtxt(workspace +'\\Assign1.txt', delimiter = ',', usecols = range(1))
value = np.loadtxt(workspace +'\\Assign1.txt', delimiter = ',', usecols = range(1,2))
for x in time:
    x+1;
    print(x)

for y in value:
    y+1
    print(y[-1])   
# I want this to read the last value(-1100) from the array
# of the text file I have. I already got the values 
# pulled from the text file. It gives me an error.

如果我确实这样做了,那么因为这是一个负值,我需要将它添加到之前的负值,依此类推。

我的内容只是一个样本。可能有多于或少于4个时间值,负值和正值可能在时间轴上的任何位置。目标是获得t = 0中的所有负值和正值,并查看负值是否等于正值。如果其中一个值大于1但小于或等于15,则需要将这些值视为相等。

1 个答案:

答案 0 :(得分:0)

在代数上,你所描述的内容比你所描述的过程简单得多。您将所有数字加起来,看看结果是否在[-15,15]范围内。使用此条件检查替换您的两个预期循环:

if -15 <= sum(value) <= 15:
    # Here, insert the code for matching stuff.

至于为什么你的代码失败......循环不正确。我不确定你要用两个 +1 表达式做什么;它们不会以任何方式影响数据流,因为您不存储该值。

第二个循环很困惑。在每次迭代中,您从列表中获取单个值。您的print语句也将该单个值视为列表(您可以在Python中创建列表列表,但此程序不会这样做)。当您尝试访问单个整数的最后一个元素时,Python会通知您混淆。

要打印列表的最后一个值,只需使用打印值[-1] ;不要遍历整个列表来查找最后一项。

也就是说,我们现在有了原始问题:如何使用您描述的算法对负值和正值进行求和。您需要以相反的顺序运行列表。我将在两个循环中执行此操作,每个循环用于正面和负面:

time = range(10)
value = [213, -999, 456, -1100, -16, 5, 42, -80, 9, 10]

last_neg = 0
for i in range(len(value)-1, -1, -1):   # Go through the list in reverse order
    if value[i] < 0:
        value[i] += last_neg
        last_neg = value[i]

last_pos = 0
for i in range(len(value)-1, -1, -1):   # Go through the list in reverse order
    if value[i] > 0:
        value[i] += last_pos
        last_pos = value[i]

print "pos & neg sums", value[0], value[1]
value[0] += value[1]

print "grand sum", value[0]

print "Check the summation:", value

输出:

pos & neg sums 735 -2195
grand sum -1460
Check the summation: [-1460, -2195, 522, -1196, -96, 66, 61, -80, 19, 10]