二维数组的对数重组
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!
我现在将在我的对数缩放数据上尝试它
我有一个一维射线,其中包含看起来像这样的数据(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! 我现在将在我的对数缩放数据上尝试它