Tôi muốn lưu một mảng 2D vào tệp CSV với thông tin "tiêu đề" hàng và cột (như bảng). Tôi biết rằng tôi có thể sử dụng đối số tiêu đề để numpy.savetxt để lưu tên cột, nhưng có cách nào dễ dàng để bao gồm một số mảng (hoặc danh sách) khác làm cột dữ liệu đầu tiên (như tiêu đề hàng) không?Python/Numpy - Lưu mảng với tiêu đề cột và hàng
Dưới đây là ví dụ về cách tôi hiện đang thực hiện. Có cách nào tốt hơn để bao gồm những tiêu đề hàng, có lẽ một số trick với savetxt tôi không biết?
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())
Việc sử dụng hstack phải tạo lại mảng trong bộ nhớ, đúng không? Vì vậy, nếu dữ liệu rất lớn, thì chúng ta phải phân bổ lại bộ nhớ đó. Đối với ứng dụng cụ thể của tôi, đó không phải là bất kỳ vấn đề thực sự, nhưng chỉ là một điểm đáng nói đến. Và có lẽ không có cách nào xung quanh chuyện này. Nó có vẻ như một cái gì đó mà savetxt nên thực hiện trong nội bộ, ngay cả khi nó phải làm một giải pháp tương tự như tôi (nhưng trong mã C cơ bản). –
Vâng, bạn nói đúng. Tôi nghĩ rằng có lẽ tất cả các chi phí này có thể tránh được với một mảng bản ghi, và sử dụng thực tế là fmt chấp nhận một danh sách các toán tử định dạng, như 'fmt = ['% s', '% f', ...]', nhưng Tôi không quen thuộc với họ, và vì vậy đây chỉ là một phỏng đoán. – jorgeca
Ya, tôi cũng đã xem xét một mảng bản ghi. Tôi nghĩ rằng bạn nói đúng, rằng nó có thể được sử dụng ... nhưng tôi đã hy vọng để tránh chúng ... Tôi đoán tôi sẽ chỉ chọn bất cứ điều gì có vẻ là ít hơn của hai tệ nạn. –