Tôi có một mảng có khối lượng 3D (thời gian, X, Y) chứa 6 chuỗi thời gian hàng giờ trong một vài năm. (nói 5). Tôi muốn tạo một chuỗi thời gian lấy mẫu có chứa 1 ví dụ của mỗi ngày dương lịch được lấy ngẫu nhiên từ các bản ghi có sẵn (5 khả năng mỗi ngày), như sau.Cách nhanh nhất để lấy mẫu lát các mảng khối ô vuông là gì?
- 01 Tháng Một: 2006
- 2 tháng 1: 2011
- 03 Tháng 1: 2009
- ...
này có nghĩa là tôi cần phải thực hiện 4 giá trị từ 01/01/2006 , 4 giá trị từ 02/01/2011, v.v. Tôi có phiên bản hoạt động, hoạt động như sau:
- Định hình lại mảng đầu vào để thêm thứ nguyên "năm" (Thời gian, Năm, X, Y)
- Tạo mảng giá trị 365 của số nguyên được tạo ngẫu nhiên giữa 0 và 4
- Sử dụng np.repeat và mảng số nguyên để trích xuất chỉ các giá trị liên quan:
Ví dụ:
sampledValues = Variable[np.arange(numberOfDays * ValuesPerDays), sampledYears.repeat(ValuesPerDays),:,:]
Điều này dường như làm việc, nhưng tôi đã tự hỏi nếu điều này là cách tiếp cận tốt nhất/nhanh nhất để giải quyết vấn đề của tôi? Tốc độ là quan trọng vì tôi đang làm điều này trong một vòng lặp, adn sẽ được hưởng lợi từ việc kiểm tra càng nhiều trường hợp càng tốt.
Tôi có làm đúng không?
Cảm ơn
EDIT tôi quên đề cập đến mà tôi lọc các dữ liệu đầu vào để loại bỏ các ngày 29 tháng hai năm nhuận. Về cơ bản mục tiêu của hoạt động đó là tìm mẫu 365 ngày phù hợp với chuỗi thời gian dài về mặt trung bình, vv Nếu chuỗi thời gian lấy mẫu vượt qua kiểm tra chất lượng của tôi, tôi muốn xuất nó và bắt đầu lại.
Điều này giống như một cách tiếp cận đầy hứa hẹn! – heltonbiker
Tôi đã đề cập đến nó nhưng tôi không thực sự quan tâm đến những năm nhuận trong trường hợp này, vì tôi đã loại bỏ tất cả các lần xuất hiện 29 tháng 2 trong chuỗi thời gian đầu vào. Tôi mặc dù sử dụng scikits.timeseries, tuy nhiên tôi không chắc chắn tôi sẽ thực sự được hưởng lợi từ nó về tốc độ. Ngoài ra tôi có thể muốn bắt đầu ngày của tôi lúc 6:00 hoặc 12:00, vì vậy tôi không thực sự muốn tạo ra một mảng các đối tượng datetime để trích xuất mỗi khi tôi chỉ có thể sử dụng mảng lấy mẫu của mình (rs = np .random.randint (0, np.size (năm), size = 365)) ngay lập tức. Nhưng tôi có thể sai! – Jahfet