Tôi thấy mình phân tích rất nhiều tệp dữ liệu (thường là trong tệp .csv hoặc tương tự) bằng trình đọc csv và vòng lặp for lặp lại trên mỗi dòng. Các dữ liệu thường là một bảng nổi như vậy ví dụ.Cách Pythonic để điền vào mảng numpy
reader = csv.reader(open('somefile.csv'))
header = reader.next()
res_list = [list() for i in header]
for line in reader:
for i in range(len(line)):
res_list[i].append(float(line[i]))
result_dict = dict(zip(header,res_list)) #so we can refer by column title
Đây là một cách ok để cư vì vậy tôi nhận được mỗi cột như một danh sách riêng biệt tuy nhiên, tôi muốn rằng nơi chứa dữ liệu mặc định cho danh sách các mục (và danh sách lồng nhau) là mảng NumPy, vì 99 lần ra 100 số được bơm vào các kịch bản/chức năng xử lý khác nhau và có sức mạnh của các danh sách gọn gàng làm cho cuộc sống của tôi dễ dàng hơn.
Numpy append(arr, item)
không nối thêm tại chỗ và do đó sẽ yêu cầu tạo lại mảng cho mọi điểm trong bảng (chậm và không cần thiết). Tôi cũng có thể lặp qua danh sách các cột dữ liệu và bọc chúng vào một mảng sau khi tôi hoàn thành (đó là những gì tôi đã làm), nhưng đôi khi nó không được cắt rõ ràng như vậy về khi Tôi đã hoàn tất phân tích cú pháp tệp và có thể cần phải chắp thêm nội dung vào danh sách sau đó xuống dòng. Tôi đã tự hỏi nếu có một số cách ít lò hơi hơn (sử dụng cụm từ được sử dụng quá mức "pythonic") để xử lý các bảng dữ liệu theo cách tương tự, hoặc để cư trú mảng (nơi chứa cơ sở là một danh sách) tự động và không có mảng sao chép mọi lúc.
(Lưu ý khác: loại gây phiền nhiễu khi nói chung mọi người sử dụng cột để tổ chức dữ liệu nhưng csv
đọc theo hàng nếu người đọc kết hợp đối số read_column (có, tôi biết nó sẽ không siêu hiệu quả), tôi nghĩ nhiều người sẽ tránh việc mã tấm nồi hơi như ở trên để phân tích một tệp dữ liệu csv)
tôi đã xem xét này trước đây, nhưng nó có một số vấn đề, đặc biệt là nó đòi hỏi rằng chiều dài hàng là như nhau xuống mảng. Mặc dù đoạn mã nhỏ của tôi giả định rằng nó không phải lúc nào cũng xảy ra (ví dụ: các hàng trống để chỉ ra các ngắt giữa các cụm thu thập dữ liệu). – crasic
Nếu tôi hiểu chính xác - hãy xem chỉnh sửa. –