Chcę zapisać tablicę 2D do pliku CSV z informacjami nagłówka i kolumny "nagłówka" (jak tabela). Wiem, że mógłbym użyć argumentu nagłówka do numpy.savetxt, aby zapisać nazwy kolumn, ale czy istnieje jakaś łatwa metoda włączenia innej tablicy (lub listy) jako pierwszej kolumny danych (takich jak tytuły wierszy)?Python/Numpy - Zapisz tablicę z tytułami kolumny i wiersza
Poniżej znajduje się przykład tego, jak obecnie to robię. Czy istnieje lepszy sposób na dołączenie tych tytułów wierszy, może jakiejś sztuczki z savetxt jestem nieświadomy?
import csv
import numpy as np
data = np.arange(12).reshape(3,4)
# Add a '' for the first column because the row titles go there...
cols = ['', 'col1', 'col2', 'col3', 'col4']
rows = ['row1', 'row2', 'row3']
with open('test.csv', 'wb') as f:
writer = csv.writer(f)
writer.writerow(cols)
for row_title, data_row in zip(rows, data):
writer.writerow([row_title] + data_row.tolist())
Używanie hstack musi jednak odtworzyć tablicę w pamięci, prawda? Jeśli więc dane są bardzo duże, musimy ponownie przydzielić tę pamięć ponownie. W przypadku mojej konkretnej aplikacji jest to mało prawdopodobne, ale jest to punkt, o którym warto wspomnieć. I prawdopodobnie nie ma na to żadnego sposobu. Wydaje się, że coś, co savetxt powinno implementować wewnętrznie, nawet jeśli musi zrobić rozwiązanie podobne do mojego (ale leżące u podstaw kodu C). –
Tak, masz rację. Myślę, że być może uda się uniknąć całego tego obciążenia za pomocą tablicy rekordów i używając faktu, że fmt akceptuje listę operatorów formatujących, takich jak 'fmt = ['% s', '% f', ...]', ale Nie znam ich, więc to tylko domysły. – jorgeca
Ya, wziąłem pod uwagę także tablicę rekordów. Myślę, że masz rację, że można z tego skorzystać ... ale miałem nadzieję, że ich uniknę ... Chyba wybiorę tylko to, co wydaje się mniejszym zło. –