始终将答案与给定常量相乘,检查等价性,并创建条形图



我正在从具有两列的文本文件中提取值。文本文件看起来完全如下所示,其中每行的第一个数字是"time"值,第二个数字只是一个"数字">

0,311.235  
1,0  
2,5316.36  
3,-4086.90  
4,-1739.985

除了一件事之外,我弄清楚了主要部分的代码。我仍然要检查正负的等效性。阅读以下内容并按照代码进行操作:

workspace = 'C:\UsersmasterDesktop'
time= np.loadtxt(workspace +'\project.txt', delimiter = ',', usecols = range(1))
num = np.loadtxt(workspace +'\project.txt', delimiter = ',', usecols = range(1,2))
last_neg_num = 0
for i in range(len(num)-1, -1, -1):   
    if num[i] < 0:
        num[i] += 2*last_neg_num
        last_neg_num = num[i]
last_pos_num = 0
for i in range(len(num)-1, -1, -1):   
    if num[i] > 0:
        num[i] += 2*last_pos_num
        last_pos_num = num[i]
print num[0], num[1]

这只是一个示例文本文件。我可以有或多或少的时间值和更多的与之相关的数字,它们可以是负数或正数。

现在,我想对文本文件中的内容进行操作:

  1. 在 time=0 处引入所有负值和正值。
  2. 要完成步骤 1,我需要取正数或负数的最后一个值,并在乘以常数 2 后将其向左移动。

例如:-1739.985 在 time=4,所以我需要移动那个时间=3,当我把它移动到 time=3 时,我把它乘以 2,得到 -3479.97。-4086.90 的值也位于 time=3,因此我需要添加 -3479.97+(-4086.90( = -7566.87。现在,我们在 time=3 时有一个数字。但是,没有更多的负面数字。但是,它需要转到时间= 0。为此,我需要经历时间= 2和时间= 1。要从 time=3 到 time=2,我需要再次将 -7566.87 乘以 2 = -15133.74。由于在 time=2 时没有什么可添加的(加 0(,我需要通过将 -15133.74*2 = -30267.48 移动到 time=1,最后到 time=0 给我 -60534.96。

对正数做同样的事情,我得到了 21576.675,就数量级而言,这显然不等于 time=0 时的最终负值。因此,代码需要告诉它们不是等效的。

我的代码不会将答案乘以 2,如果在任何时候=,负边或正边都没有数字。如何解决?现在,显然,对于这个特定问题,积极因素并不等于消极因素。如果其中一个值大于 1 但小于或等于 15,则需要将值视为相等。因此,例如:在 time=0 时,如果我有 350 个正数,而负数为 359,那么它们是相等的,因为负数是正数的 +9。

我希望这是有道理的。我还需要一个显示文本文件中内容的视觉对象。条形图应该可以。

似乎你想计算num的加权和,其中权重2**time,所以:

import numpy as np
workspace = 'C:\UsersmasterDesktop'
time, num = np.loadtxt(workspace + '\project.txt', delimiter=',', unpack=True)
res = np.sum(num * 2**time)
ares = np.abs(res)
print ares >= 1 and ares <= 15

至于图表,请使用matplotlib

import matplotlib.pyplot as plt
plt.bar(time, num)
plt.show

最新更新