Je ne sais pas s'il s'agit d'un bug ou d'une fonctionnalité mais si j'utilise:
f_data = np.genfromtxt('file.dat', dtype=None, unpack=True)
où file.dat
est un fichier de données standard avec plusieurs colonnes (ie: http://pastebin.com/ihEW2dxS) le résultat n'est pas transposé comme on s'attendrait à avoir mis unpack=True
.
Par exemple, la ligne f_data = np.loadtxt('file.dat', unpack=True)
fonctionne comme prévu.
Cela ressemble à un bug, le marquant ainsi jusqu'à ce qu'il en soit informé autrement.
J'ai étudié cela un peu.
Le résultat du code de @ Gabriel-p est un tableau flex de forme (12,). Le code appelle output.T
dessus, mais comme il est unidimensionnel, il s'agit d'un no-op.
Le plus gros problème que dtype=None
spécifie que ce sera un tableau flex. Chaque colonne a un type inféré distinct. Si nous devions réellement transposer ce résultat, chaque ligne devrait avoir un type distinct. AFAIK, la seule façon de le faire est d'avoir une liste ou un tuple de tableaux homogènes.
Puisque numCols << numRows dans le fichier texte, l'utilisation d'une liste ou d'un tuple ne devrait pas être un gros problème. S'il était implémenté de cette façon, il décompresserait pour x, y, z = np.genfromtxt(...)
comme spécifié dans la documentation et résoudrait le cas de @ Gabriel-p.
Cependant, genfromtxt
dépasse déjà 600 lignes. Des pensées?
Je viens de me faire mordre par ça aussi. J'ai fait un cas de test, voir
https://github.com/hsgg/numpy.git
J'expérimente également cela. loadtxt
est un peu plus intelligent:
if unpack:
if len(dtype_types) > 1:
# For structured arrays, return an array for each field.
return [X[field] for field in dtype.names]
else:
return X.T
Pourquoi genfromtxt
ne fait-il pas cela?
Une mise à jour sur ce problème? Il semble que cela n'ait pas changé depuis 2014.
La suggestion @ moi90 faite il y a quelques années est correcte. genfromtxt
devrait faire la même chose que loadtxt
.
Je pense que ce sera facile à résoudre, donc j'ai marqué le problème comme un "bon premier problème".
Commentaire le plus utile
J'expérimente également cela.
loadtxt
est un peu plus intelligent:Pourquoi
genfromtxt
ne fait-il pas cela?