2016-06-09 1 views
0

Je travaille avec les spectres SDSS, j'ai lu un fichier fits utilisant mrdfits, il dit que les données sont stockées dans 8 columns and 3838 rows qui est la dimension correcte des données. Mais quand je cherche une colonne spécifique en utilisant print spec[0,1], il renvoie une erreur de out of bound. Si j'utilise print spec[0*1] donne une sortie deExtraire des colonnes individuelles d'un tableau dans IDL

{11.7020 3.58080 0.0990829 0 0 1.49589 15.6233 10.8985}

qui je pense est un élément et non 8. Comment puis-je séparer ces colonnes en individuels de ce tableau?

Répondre

1

Je ne suis pas familier avec votre format de données exact, mais il semble que chaque ligne est une structure avec 8 champs. La commande HELP sera utile pour vous ici:

IDL> help, spec[0] 

devrait vous donner une sortie sur la façon d'accéder aux colonnes de données. Par exemple, je peux faire un exemple spec pour vous montrer (ne vous inquiétez pas cette commande, vous avez déjà un spec!):

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

HELP vous dira que vous avez un tableau de structures:

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

HELP sur une ligne individuelle vous dire les noms des champs (colonnes):

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 

vous pouvez accès également une colonne entière:

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

Vous pouvez couper et couper en dés vos données dans une variété de façons, consultez spec[100], spec[100].a, spec.a ou spec.a[100]. Vous pouvez également utiliser l'indexation de tableau normale, telle que spec[10:19].a.