试图将一列合并,同时对另一列求和。请帮忙。

我有一个数组[x,y],其中x的值是递增的,而y值是随机的。当x值在某个范围内时,我想把所有的y值加在一起。我不能向你展示任何代码,因为我甚至不知道从哪里开始,但这是期望的效果:
示例数据:-
(1,0.5)
(2,5.0)
(4,2.0)
(7,0.5)
(8,0.5)
(10,2.5)
(11,1.5)
(15,3.0)
(18,4.0)
(20,0.5)
......等。
如果y的范围是10。因此,从y=1到y=10和从y=11到y=20,x值将在这两个范围内求和,我将得到一个列表:
11.0、9.0、......等。
到目前为止,我被建议将所有y值相加,这给出了:

选择 | 换行 | 行号
  1.  SELECT ALL
  2. import numpy, scipy, matplotlib.pylab as plt
  3.  
  4. mjd1, flux1, error1 = numpy.loadtxt("log_207_band1.dat", usecols=(1,2,3), unpack=True)
  5.  
  6. x=mjd1
  7. y=flux1
  8. z=zip(x,y)
  9.  
  10. print sum(i[1] for i in z)

我真的不知道下一步该做什么。
谢谢。

# 回答1


我会先给我的垃圾箱下定义:
例如bin=范围(10,100,10)
然后给你列一张金额清单:
总和=[0]
然后根据x的值将y值添加到最后一个值(即sum[-1])或将新值附加到sum(即Sums.append(0))。
# 回答2

选择 | 换行 | 行号
  1. bin=10
  2. sums=[0]
  3. for x,y in zip(xs,ys):
  4.     if x>bin:
  5.         bin+=10
  6.         sums.append(0)
  7.     sums[-1]+=y
  8.  

应该这么做。

标签: python

添加新评论