从 IDL 中的数组中提取单个列

Extract individual columns from an array in IDL

我正在使用 SDSS 光谱,我使用 mrdfits 读取了一个拟合文件,它说数据存储在 8 columns and 3838 rows 中,这是数据的正确维度。

但是当我使用 print spec[0,1] 查找特定列时,它 returns 出现 out of bound 错误。如果我使用 print spec[0*1] 它会给出

的输出

{11.7020 3.58080 0.0990829 0 0 1.49589 15.6233 10.8985}

我认为这是一个元素而不是 8 个。我如何将这些列从这个数组中分离成单独的列?

我不熟悉你的确切数据格式,但似乎每一行都是一个包含 8 个字段的结构。 HELP 命令在这里对你有用:

IDL> help, spec[0]

应该给你一些关于如何访问数据列的输出。例如,我可以举个例子 spec 给你看(不用担心这个命令,你已经有一个 spec 了!):

IDL> spec = replicate({a: 0, b:0, c:0, d:0, e:0, f:0, g:0, h:0}, 3838)

HELP 会告诉你你有一个结构数组:

IDL> help, spec
SPEC            STRUCT    = -> <Anonymous> Array[3838]

HELP 在单个行上会告诉您字段(列)的名称:

IDL> help, spec[0]
** Structure <170b6a8>, 8 tags, length=16, data length=16, refs=2:
   A               INT              0
   B               INT              0
   C               INT              0
   D               INT              0
   E               INT              0
   F               INT              0
   G               INT              0
   H               INT              0

您还可以访问整个专栏:

IDL> help, spec.a
<Expression>    INT       = Array[3838]

您可以通过多种方式对数据进行切片和切块,查看 spec[100]spec[100].aspec.aspec.a[100]。您也可以使用普通数组索引,例如 spec[10:19].a.