Définir dtypes dans NumPy à l'aide d'une liste?
Je suis juste un problème avec NumPy dtypes. Essentiellement, je suis en train de créer une table qui ressemble à celui-ci (et puis enregistrez-le à l'aide de rec2csv):
name1 name2 name3 . . .
name1 # # #
name2 # # #
name2 # # #
.
.
.
La matrice (tableau numérique dans le centre), est déjà calculée avant que je tente d'ajouter le nom des balises. J'ai essayé d'utiliser le code suivant:
dt = dtype({'names' : tuple(blah), 'formats' : tuple(fmt)})
ReadArray = array(tuplelist, dtype=dt)
où tuplelist est une liste de lignes (c'est à dire la ligne [nom1, #, #, #...]), blah est une liste de chaînes de caractères (c'est à dire les noms, blah = ['name1', 'name2', ...]
) et de l'esf est la liste de format,s (c'est à dire fmt = [str, float, float, ...]
).
L'erreur que j'obtiens est le suivant:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "table_calc_try2.py", line 152, in table_calc_try2
dt = dtype({'names' : tuple(blah), 'formats' : tuple(fmt)})
TypeError: data type not understood
Peut aider quelqu'un?
Merci!
OriginalL'auteur Tarun Chitra | 2010-08-04
Vous devez vous connecter pour publier un commentaire.
Le code suivant peut aider:
Votre problème immédiat était que
np.dtype
attend les spécificateurs de format pour être numpy types, tels que'|S10'
ou'<f8'
et pas Python les types, tels questr
oufloat
. Si vous tapezhelp(np.dtype)
vous verrez de nombreux exemples de la façon dontnp.dtypes
peut être spécifié. (Je n'ai mentionné que quelques-unes.)Noter que les np.tableau attend une liste de tuples. C'est assez particulier à ce sujet.
Une liste de listes soulève
TypeError: expected a readable buffer object
.Un (tuple de tuples) ou un (tuple de listes) soulève
ValueError: setting an array element with a sequence
.{'names':['f0', 'f1' ...], 'formats':[np.float, np.int, ...]}
comme un dtype est souvent beaucoup plus pratique.Peut 'f0', 'f1' index? En général, je ont un col de date ou de chaîne, le reste sont des flotteurs. Ex: 'foo', 1,2,2,44,3 ou 22,2,2,2,2,'3/2/2001' quel est le meilleur dtype solutions?
+1 pour noter les exceptions soulevées lors de la saisie des données est différente de celle d'une liste de tuples, après avoir heurté moi-même dans cette trop souvent.
OriginalL'auteur unutbu