2012-03-28 4 views
2

Je suis en train de créer un tableau structuré dans le format ci-dessous:Structuré Numpy Tableau imbriqué

import numpy as np 
x = np.array([(2009, (('USA', 10.), ('CHN', 12.))), (2010, (('BRA', 10.), 
    ('ARG', 12.)))], dtype=[('year', '<i4'), [('iso','a3'), ('value','<f4')]]) 

mais il continue à me dire d'entrer un type de données valide et je ne suis pas sûr de savoir comment procéder. Je suis en mesure de le faire très bien si le tableau est imbriqué dans le même format, à savoir tous les entiers:

np.array([('ABC', ((1, 2, 3), (1, 2, 3))), ('CBA', ((3, 2, 1), (3, 2, 1)))], 
    dtype='a3, (2, 3)i') 

Toute aide ou suggestions seraient grandement appréciés.

Répondre

1

Vous devez donner le deuxième élément de votre DTYPE un nom, essayez:

>>> dtype=[('year', '<i4'), ('item_name', [('iso','a3'), ('value','<f4')])] 
>>> np.zeros(3, dtype=dtype) 
array([(0, ('', 0.0)), (0, ('', 0.0)), (0, ('', 0.0))], 
     dtype=[('year', '<i4'), ('item_name', [('iso', '|S3'), ('value', '<f4')])]) 

Pardonne-moi pour éditoriaux, mais je trouve rec tableaux assez dur pour travailler avec sans l'imbrication, seriez-vous perdre une beaucoup si vous avez juste aplati le dtype?

mise à jour:

Vous avez un niveau d'imbrication plus que j'ai réalisé. Essayez ceci:

>>> dtype=[('year', '<i4'), ('countries', [('c1', [('iso','a3'), ('value','<f4')]), ('c2', [('iso','a3'), ('value','<f4')])])] 
>>> np.array([(2009, (('USA', 10.), ('CHN', 12.))), (2010, (('BRA', 10.), ('ARG', 12.)))], dtype) 
array([(2009, (('USA', 10.0), ('CHN', 12.0))), 
    (2010, (('BRA', 10.0), ('ARG', 12.0)))], 
    dtype=[('year', '<i4'), ('countries', [('c1', [('iso', '|S3'), ('value', '<f4')]), ('c2', [('iso', '|S3'), ('value', '<f4')])])]) 
+0

toujours pas de chance: 'np.array ([(2009, (('USA', 10.), ('CHN', 12.))), (2010, (('BRA ', 10.), (' ARG ', 12.)))], dtype = [(' year ',' hotshotiguana

+1

Je vais probablement aplatir l'objet sur la ligne parce qu'il est plus facile d'obtenir les données d'une base de données, mais c'est une question qui pose un problème quand je travaille avec Numpy, alors j'ai pensé que je le demanderais. – hotshotiguana

Questions connexes