如何将映射数据转换为字典,其中每个 XY 坐标都包含一个光谱?

问题描述

我有一个 2D 地图,其中每个像素都包含一个光谱。我想从这种格式转换数据:

X       Y       Wave        Intensity
-34727.180000   -4204.820000    1.484622    139.193512
-34727.180000   -4204.820000    1.484043    120.991280
-34727.180000   -4204.820000    1.483465    125.905304
-34726.180000   -4204.820000    1.483465    131.262970
-34726.180000   -4204.820000    1.482887    122.784081
-34726.180000   -4204.820000    1.482309    129.853088
-34725.180000   -4204.820000    1.483465    129.655670
-34725.180000   -4204.820000    1.482887    119.567032
-34725.180000   -4204.820000    1.482309    126.097000
-34727.180000   -4203.820000    1.463490    124.331985
-34727.180000   -4203.820000    1.462927    138.189377
-34727.180000   -4203.820000    1.462364    127.824867

到字典,其中键是 X,Y 坐标的元组,值是 3×2 numpy 数组。例如:

DICT = {
    (-34727.180000,-4204.820000): [[1.484622,139.193512],[1.484043,120.991280],[1.483465,125.905304]],(-34726.180000,-4204.820000): [[1.482887,122.784081],[1.482887,[1.482309,129.853088]],(-34725.180000,-4204.820000): [[1.483465,129.655670],119.567032],126.097000]],(-34727.180000,-4203.820000): [[1.463490,124.331985],[1.462927,138.189377],138.189377]]}

这个例子是简化的;我的实际地图包含四个以上的像素(X、Y 坐标),每个坐标有 512 个波强度对。我希望解决方案可以从四像素图推广到 400 像素图,每个数组从 3×2 numpy 数组推广到 512×2 numpy 数组。

最终目标是获取每个坐标的波强度对,将它们拟合为高斯分布,找到该分布的(最大)振幅,并绘制每个 X、Y 坐标的最大值。这部分问题不需要包含在解决方案中,但如果有人为这部分问题添加解决方案,那就太好了!

我对不涉及字典的方法(例如 4D numpy 数组)持开放态度,但目前我看不到其他方法。随意推荐一种替代方法。目前,我正在使用 pandas:

以原始格式导入数据
import pandas as pd
IN_PATH = r'PATH_TO_FILE'
FNAME = r'\FILENAME.txt'
data = pd.read_csv(IN_PATH+FNAME,sep='\t',skiprows=1)
data.columns = ["X","Y","Wave","Intensity"]

提前致谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)