Tôi tạo ra một danh sách các mảng có chiều rộng một chiều trong một vòng lặp và sau đó chuyển đổi danh sách này thành một mảng numpy 2d. Tôi sẽ preallocated một mảng numpy 2d nếu tôi biết số lượng các mặt hàng trước thời hạn, nhưng tôi không, do đó tôi đặt tất cả mọi thứ trong một danh sách.Cách Pythonic để tạo một mảng numpy từ danh sách các mảng có nhiều mảng
Các giả lên là dưới đây:
>>> list_of_arrays = map(lambda x: x*ones(2), range(5))
>>> list_of_arrays
[array([ 0., 0.]), array([ 1., 1.]), array([ 2., 2.]), array([ 3., 3.]), array([ 4., 4.])]
>>> arr = array(list_of_arrays)
>>> arr
array([[ 0., 0.],
[ 1., 1.],
[ 2., 2.],
[ 3., 3.],
[ 4., 4.]])
Câu hỏi của tôi là như sau:
Có cách nào tốt hơn (performancewise) để đi về nhiệm vụ thu thập dữ liệu bằng số tuần tự (trong tôi trường hợp mảng numpy) hơn đặt chúng trong một danh sách và sau đó làm một numpy.array ra khỏi nó (Tôi đang tạo một obj mới và sao chép dữ liệu)? Có cấu trúc dữ liệu ma trận "có thể mở rộng" có sẵn trong một mô-đun được thử nghiệm tốt không?
Một kích thước đặc trưng của ma trận 2ngày của tôi sẽ là giữa 100x10 và 5000x10 nổi
EDIT: Trong ví dụ này tôi đang sử dụng bản đồ, nhưng trong ứng dụng thực tế của tôi Tôi có một vòng lặp for
@Alok --- cảm ơn cho câu trả lời chu đáo . Thời gian trong câu trả lời từ ~ unubuntu thể hiện sự lo lắng về hiệu quả 5%. Điều này gần như chắc chắn là một sai lầm cho đến khi bạn nhận được đến mức bạn hoàn toàn phải có 5% đó. – telliott99