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

时间:2016-06-09 20:03:19

标签: arrays idl large-data

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

但是当我使用print spec[0,1]查找特定列时,它会返回out of bound的错误。如果我使用print spec[0*1],则会输出

{11.7020 3.58080 0.0990829 0 0 1.49589 15.6233 10.8985}

我认为这是一个元素,而不是8.我如何将这些列从这个数组中分离出来?

1 个答案:

答案 0 :(得分:1)

我不熟悉您的确切数据格式,但似乎每行都是一个包含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

相关问题