J'ai un tableau de type tableau mixte à 2 colonnes que j'ai besoin de lire et de remodeler en un cube de données. J'ai la plupart de travail, mais pour une raison quelconque à la fois numpy.loadtxt et np.genfromtxt laisser tomber tout après le 8ème caractère de la partie de la chaîne du tuple. J'ai 25 blocs de 8 paires de paramètres-valeurs correspondant à des étoiles de masses et de métallités variables. Par exemple, Teff \t\t 5.2739E+3
(il y a 2 onglets entre la chaîne et le flotteur) convertit en une paire clé-valeur très bien, mais MASS/MSUN \t\t 0.800
est converti en 'MASS/MSU':0.800
au lieu de 'MASS/MSUN':0.800
comme je m'y attendais. De même, LOG(L/LSUN) \t\t 0.0522
devient 'LOG(L/LS': 0.0522
au lieu de 'LOG(L/LSUN)': 0.0522
Pourquoi les derniers caractères des chaînes tombent-ils? J'ai essayé de régler les délimiteurs uniquement sur les onglets, seulement les onglets et les retours à la ligne (cela n'a pas plu), j'ai mis en commentaire les lignes entre les blocs, etc. coincé à 8. Il doit y avoir un sous-type de chaîne que je dois déclarer. J'ai fait une solution de contournement, ça me dérange.Chaînes tronquées Python loadtxt et genfromtxt
Ceci est mon code (j'utilise l'interface graphique Spyder, BTW):
>>>f=np.genfromtxt("zamsdata.txt",dtype=(str,float))
>>>zcube = defaultdict(lambda: defaultdict(lambda: defaultdict(list)))
>>>infotups=[]
>>>for row in f:
>>> if 'MASS' in row[0]:
>>> mass=str(row[1])
>>> continue #rows are in repeating order of MASS, X, Y, Pc, Tc, R, L, Te, LOG(Te) & LOG(L/LSUN)
>>> if 'X' in row[0]:
>>> hydfrac=str(row[1])
>>> continue
>>> else:
>>> infotups=infotups+[[hydfrac,mass,str(row[0]),row[1]]]
>>>
>>>for l,m,a,o in infotups:
>>> zcube[l][m][a].append(o)
bonne question, il serait encore mieux si vous pouviez inclure un exemple des données d'entrée et la sortie attendue ... –
J'avais espéré que ce serait auto-explicatif que l'entrée est en cours de conversion verbatim d'un tuple à une paire clé/valeur, mais je suppose que ça ne fait jamais de mal d'ajouter une clarification supplémentaire. – ColorOutOfSpace