Ich habe eine Reihe von Bildern, die in einer CVS-Datei als eine Zeichenfolge pro Bild gespeichert sind, die Zeichenfolge ist eine Liste von 9216 durch Leerzeichen getrennten Ganzzahlen. Ich habe eine Funktion, die dies in ein 96x96-Array konvertiert.Wie speichere ich ein numpy Array als Objekt in einem Pandas Datenrahmen?
Ich möchte dieses numpy Array in einer Spalte meines Datenrahmens anstelle der Zeichenfolge speichern.
Wenn ich jedoch das Element aus der Spalte abrufen, ist es nicht mehr als numpy Array verwendbar.
Daten können von hier heruntergeladen werden, die letzte Spalte in der Datei training.cvs.
https://www.kaggle.com/c/facial-keypoints-detection/data
import pandas as pd
import numpy as np
df_train = pandas.read_csv("training.csv")
def convert_to_np_arr(im_as_str):
im = [int(i) for i in im_as_str.split()]
im = np.asarray(im)
im = im.reshape((96, 96))
return im
df_train['Im_as_np'] = df_train.Image.apply(convert_to_np_arr)
im = df_train.Im_as_np[0]
plt.imshow(im, cmap = cm.Greys_r)
plt.show()
Wenn stattdessen die Funktion der Verwendung und Anwendung und Speichern des Bildes, verwende ich den Code direkt als
import pandas as pd
import numpy as np
df_train = pandas.read_csv("training.csv")
im = df_train.Image[0]
im = [int(i) for i in im.split()]
im = np.asarray(im)
im = im.reshape((96, 96))
plt.imshow(im, cmap = cm.Greys_r)
plt.show()