二维数组的对数重组

logarithmic rebinning of 2D array

我有一个一维射线,其中包含看起来像这样的数据(48000 点),间隔为一个波数 (R = 1 cm-1)。 x 和 y 数组的形状是 (48000, 1),我想以类似的方式重新组合两者

xarr=[50000,9999,9998,....,2000]
yarr=[0.1,0.02,0.8,0.5....0.1] 

我希望降低空间分辨率,假设 R= 10 cm-1),所以我希望点数减少十倍 (4800),从 50000 到 2000。对 y 数组执行相同操作

如何开始?

我尝试采用波长标度的自然对数,然后将其重新分类到使用 np.linspace()

生成的新的波长标度对数中
xi=np.log(xarr[0])
xf=np.log(xarr[-1])
xnew=np.linspace(xi, xf, num=4800)

现在我需要将 y 数组重新转换为这个 xnew 数组,我正在考虑使用 rebin,一种 2D rebin,但不确定如何使用它。有什么建议吗?

将 numpy 导入为 np

arr1=[2,3,65,3,5...,32,2]

系列=np.array(arr1)

打印(系列[:3])

我试过了,似乎有效!

import numpy as np
import scipy.stats as stats

#irregular x and y arrays
yirr= np.random.randint(1,101,10)
xirr=np.arange(10)

nbins=5
bin_means, bin_edges, binnumber = stats.binned_statistic(xirr,yirr, 'mean', bins=nbins)

yreg=bin_means # <== regularized yarr

xi=xirr[0]
xf=xirr[-1]
xreg=np.linspace(xi, xf, num=nbins)

print('yreg',yreg)
print('xreg',xreg) # <== regularized xarr

如果有人能找到改进或发现问题,请post! 我现在将在我的对数缩放数据上尝试它