2017-10-19 1 views
0

Ich versuche, eine .mat-Datei in Csv mit Python zu konvertieren. Der Code Ich verwende istWie kann ich komplexe .mat-Datei in Csv mit Python konvertieren

import scipy.io 
import numpy as np 

data = scipy.io.loadmat("wiki.mat") 

for i in data: 
    if '__' not in i and 'readme' not in i: 
     np.savetxt(("file.csv"),data[i],delimiter=',') 

Wann immer ich diesen Code ausführen, ich Fehler erhalten, wie folgt:

Traceback (most recent call last): 
    File "test.py", line 8, in <module> 
    np.savetxt(("file.csv"),data[i],delimiter=',') 
    File "/Library/Python/2.7/site-packages/numpy/lib/npyio.py", line 1258, in savetxt 
    % (str(X.dtype), format)) 
TypeError: Mismatch between array dtype ('[('dob', 'O'), ('photo_taken', 'O'), ('full_path', 'O'), ('gender', 'O'), ('name', 'O'), ('face_location', 'O'), ('face_score', 'O'), ('second_face_score', 'O')]') and format specifier ('%.18e') 

Ich versuche, die .mat Datei von diesem Link zu konvertieren: https://data.vision.ee.ethz.ch/cvl/rrothe/imdb-wiki/static/imdb_meta.tar

Bitte helfen Sie mir mit einer funktionierenden Lösung!

+0

Python interaktiv erlaubt wird bearbeitet. Warum kontrollieren Sie nicht den Inhalt von Daten? –

+0

Entschuldigung, ich bin neu in Python und Matlab, ich arbeite an etwas im Zusammenhang mit maschinellem Lernen mit Java und node.js ad erfordern einige verwandte Daten und die Daten sind in .mat-Datei. Ich möchte nur die Daten aus dieser Datei. – Gaurav

Antwort

0

https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.savetxt.html

Speicher ein Array in eine Textdatei.

Sie können leider nur ein einzelnes numerisches Nummernfeld in einer einzigen Datei speichern. Während Ihre .mat Datei eine Struktur enthält:

>> fieldnames(imdb) 
         ans = 
         { 
          [1,1] = dob 
          [2,1] = photo_taken 
          [3,1] = full_path 
          [4,1] = gender 
          [5,1] = name 
          [6,1] = face_location 
          [7,1] = face_score 
          [8,1] = second_face_score       
          [9,1] = celeb_names 
          [10,1] = celeb_id 
         } 
>> imdb.name(1)   
         ans = 
         { 
          [1,1] = Fred Astaire 
         } 

Es könnte sinnvoll sein, um die Daten zu einem numpy Wörterbuch zu konvertieren (wie in „Complex matlab-like data structure in python (numpy/scipy)“ beschrieben) und speichert, die als .csvHow do I convert this list of dictionaries to a csv file? [Python] mit

+0

Danke für die Antwort, ich habe versucht, Ihre Schritte zu folgen, aber ich bin neu in Python und Matlab, ich kenne nur Python-Grundlagen. Ich suche nur nach den Daten aus der .mat-Datei, da ich von ML arbeite und den Inhalt zum Trainingszweck brauche. Kannst du mir bitte ein funktionierendes Beispiel geben oder einige detailliertere Informationen mit Grundlagen? – Gaurav

Verwandte Themen