使用python在大型数据集中增大时间容器

2024-05-15 04:56:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据集,它有一个大小为1/4096秒的时间容器数组,与每个时间容器中光子的数量相对应。现在,我想改变分辨率,把时间点放大2倍,把其中的2个加起来,取平均值,包括时间和光子数。我试过以下几种方法:

tnew = [] 
for n in range(int((len(t))/2)):
    tnew[n] = (t[2*n]+t[2*n+1])/2

以及:

for l in range(int((len(t))/2):
    np.append(t, (np.sum(t[2*l:4096*(2*l+1)]))/2)

但我好像没办法做到。我对Python真的很陌生。你知道吗


Tags: 数据infor数量lennp时间分辨率
1条回答
网友
1楼 · 发布于 2024-05-15 04:56:42

如果要采用NumPy数组中相邻元素的平均值,可以执行以下操作:

In [2]: a = np.arange(10)
In [3]: a
Out[3]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
In [4]: (a[:-1:2] + a[1::2])/2.
Out[4]: array([ 0.5,  2.5,  4.5,  6.5,  8.5])

这里,a[:-1:2]是偶数索引处的所有元素,a[1::2]是奇数索引处的所有元素。你知道吗

在您的例子中,由于数组的长度是2的幂,您可以选择允许按m=2、4、8等进行装箱,方法是沿着相应的轴重塑和取平均值:

In [5]: n = 1024
In [6]: a = np.arange(n)
In [7]: m = 8
In [8]: b = a.reshape((a.shape[0]/m, m))
In [9]: b.mean(axis=1)
Out[9]:
    array([    3.5,    11.5,    19.5,    27.5,    35.5,    43.5,    51.5,
              59.5,    67.5,    75.5,    83.5,    91.5,    99.5,   107.5,
              ...
          ])

相关问题 更多 >

    热门问题