这是一个例子: 我有四个标记为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,则需要将这些值视为相等。
答案 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]