Czy istnieje sposób na zrzucenie tablicy NumPy do pliku CSV? Mam tablicę 2D NumPy i muszę ją zrzucić w formacie czytelnym dla człowieka.
545
numpy.savetxt
zapisuje tablicę w pliku tekstowym.
import numpy
a = numpy.asarray([ [1,2,3], [4,5,6], [7,8,9] ])
numpy.savetxt("foo.csv", a, delimiter=",")
numpy.array
ciągów. Czy możesz przepisać metodę zapisywania jako csv dlanumpy.array
obiektu zawierającego ciągi znaków?fmt='%s'
Możesz użyć
pandas
. Zajmuje trochę dodatkowej pamięci, więc nie zawsze jest to możliwe, ale jest bardzo szybki i łatwy w użyciu.jeśli nie chcesz nagłówka lub indeksu, użyj
to_csv("/path/to/file.csv", header=None, index=None)
źródło
df.to_csv("file_path.csv", header=None)
header=None, index=None
usuwają wiersz nagłówka i kolumnę indeksu.comments
argument słowa kluczowego na''
,#
zostanie on .tofile
jest wygodną funkcją do tego celu:Strona podręcznika zawiera kilka przydatnych notatek:
Uwaga. Ta funkcja nie tworzy wielowierszowych plików csv, zapisuje wszystko w jednej linii.
źródło
Pisanie tablic rekordów jako plików CSV z nagłówkami wymaga nieco więcej pracy.
Ten przykład czyta plik CSV z nagłówkiem w pierwszym wierszu, a następnie zapisuje ten sam plik.
Zauważ, że w tym przykładzie nie uwzględniono ciągów z przecinkami. Aby rozważyć oferty na dane nienumeryczne, użyj
csv
pakietu:źródło
Jak już wspomniano, najlepszym sposobem na zrzucenie tablicy do pliku CSV jest użycie
.savetxt(...)
metody. Są jednak pewne rzeczy, które powinniśmy wiedzieć, aby robić to poprawnie.Na przykład, jeśli masz tablicę numpy z
dtype = np.int32
asi chcesz zapisać, używając
savetxt
jakoBędzie przechowywać dane w zmiennoprzecinkowym formacie wykładniczym jako
Będziesz musiał zmienić formatowanie za pomocą parametru o nazwie
fmt
asdo przechowywania danych w oryginalnym formacie
Zapisywanie danych w skompresowanym formacie gz
Ponadto,
savetxt
mogą być używane do przechowywania danych w.gz
formacie skompresowanym, które mogą być przydatne podczas przesyłania danych przez sieć.Musimy tylko zmienić rozszerzenie pliku, ponieważ
.gz
numpy zajmie się wszystkim automatycznieMam nadzieję, że to pomoże
źródło
fmt="%d"
tego szukałem. Dziękuję Ci!Wierzę, że możesz to osiągnąć w następujący sposób:
np. # 1:
np. # 2:
źródło
jeśli chcesz pisać w kolumnie:
Tutaj „a” jest nazwą tablicy numpy, a „file” jest zmienną do zapisania w pliku.
Jeśli chcesz pisać w rzędzie:
źródło
Jeśli chcesz zapisać tablicę numpy (np.
your_array = np.array([[1,2],[3,4]])
) W jednej komórce, możesz ją najpierw przekonwertowaćyour_array.tolist()
.Następnie zapisz go w zwykły sposób w jednej komórce,
delimiter=';'
a komórka w pliku csv będzie wyglądać tak[[1, 2], [2, 4]]
Następnie możesz przywrócić tablicę w następujący sposób:
your_array = np.array(ast.literal_eval(cell_string))
źródło
Możesz to również zrobić przy użyciu czystego Pythona bez użycia żadnych modułów.
źródło
W Pythonie używamy modułu csv.writer () do zapisywania danych w plikach csv. Ten moduł jest podobny do modułu csv.reader ().
Separator to ciąg używany do oddzielania pól. Wartość domyślna to przecinek (,).
źródło