numpy có các chức năng loadtxt
và genfromtxt
, nhưng không phải là đặc biệt nhanh. Một trong những trình đọc văn bản nhanh nhất có sẵn trong một thư viện được phân phối rộng rãi là hàm read_csv
trong pandas
(http://pandas.pydata.org/). Trên máy tính của tôi, đọc 5 triệu dòng chứa hai số nguyên trên mỗi dòng mất khoảng 46 giây với numpy.loadtxt
, 26 giây với numpy.genfromtxt
và nhỏ hơn 1 giây với pandas.read_csv
.
Đây là phiên hiển thị kết quả. (Đây là trên Linux, Ubuntu 12.04 64 bit. Bạn không thể nhìn thấy nó ở đây, nhưng sau mỗi lần đọc các tập tin, bộ nhớ cache đĩa đã được xóa bằng cách chạy sync; echo 3 > /proc/sys/vm/drop_caches
trong một vỏ riêng biệt.)
In [1]: import pandas as pd
In [2]: %timeit -n1 -r1 loadtxt('junk.dat')
1 loops, best of 1: 46.4 s per loop
In [3]: %timeit -n1 -r1 genfromtxt('junk.dat')
1 loops, best of 1: 26 s per loop
In [4]: %timeit -n1 -r1 pd.read_csv('junk.dat', sep=' ', header=None)
1 loops, best of 1: 1.12 s per loop
Nguồn
2013-02-26 19:26:07
Thử danh sách hiểu. –
Có lý do gì để không sử dụng 'numpy' ở đây không? – DSM
Xác định "rất lớn". Ngoài ra, mỗi dòng có cùng số nguyên không? –