从 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].a
、spec.a
或 spec.a[100]
。您也可以使用普通数组索引,例如 spec[10:19].a
.
我正在使用 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].a
、spec.a
或 spec.a[100]
。您也可以使用普通数组索引,例如 spec[10:19].a
.