首先,我只是假设Numpy是实现这一点的最佳方式,但我对其他更合适的软件包持开放态度(Pandas ?).我希望将以下数据映射为矩阵格式(最终显示给用户).
输入数据:
1) {StartDate: datetime.date(2023, 6, 30), EndDate: datetime.date(2025, 6, 30), XCord = 3.5, YVal = 65}
2) {StartDate: datetime.date(2022, 6, 30), EndDate: datetime.date(2023, 6, 30), XCord = 0.5, YVal = 50}
3) {StartDate: datetime.date(2022, 6, 30), EndDate: datetime.date(2023, 9, 30), XCord = 5.5, YVal = 100}
符合以下要求
- 输入数据中的YVal将映射为所有StartDate的值<;=Y<;=结束日期
- 对位于索引值(X轴和Y轴上)之间的任何值进行线性插值
- 对于Y轴(日期)插值,我基于日期差进行插值.也就是说,假设你有一些约会<;date_target<;date_高.我根据date_low-date_high和date_target to date_low之间的天数来存储数据.例如,如果date_目标正好位于两个Y轴日期之间,则值的50%将显示在date_高行中.
Matrix X-Axis values:
0 1 2.25 3.5 4 5 6
Matrix Y-Values:
[datetime.date(2022, 9, 30)]
[datetime.date(2022, 12, 30)]
[datetime.date(2023, 6, 30)]
[datetime.date(2023, 12, 30)]
[datetime.date(2024, 6, 30)]
[datetime.date(2024, 12, 30)]
[datetime.date(2025, 6, 30)]
对于上述各输入数据示例,它们将显示:
输入1:
Date | 0 | 1 | 2.25 | 3.5 | 4 | 5 | 6 |
---|---|---|---|---|---|---|---|
datetime.date(2022, 9, 30) | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
datetime.date(2022, 12, 30) | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
datetime.date(2023, 6, 30) | 0 | 0 | 0 | 65 | 0 | 0 | 0 |
datetime.date(2023, 12, 30) | 0 | 0 | 0 | 65 | 0 | 0 | 0 |
datetime.date(2024, 6, 30) | 0 | 0 | 0 | 65 | 0 | 0 | 0 |
datetime.date(2024, 12, 30) | 0 | 0 | 0 | 65 | 0 | 0 | 0 |
datetime.date(2025, 6, 30) | 0 | 0 | 0 | 65 | 0 | 0 | 0 |
输入2:
Date | 0 | 1 | 2.25 | 3.5 | 4 | 5 | 6 |
---|---|---|---|---|---|---|---|
datetime.date(2022, 9, 30) | 25 | 25 | 0 | 0 | 0 | 0 | 0 |
datetime.date(2022, 12, 30) | 25 | 25 | 0 | 0 | 0 | 0 | 0 |
datetime.date(2023, 6, 30) | 25 | 25 | 0 | 0 | 0 | 0 | 0 |
datetime.date(2023, 12, 30) | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
datetime.date(2024, 6, 30) | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
datetime.date(2024, 12, 30) | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
datetime.date(2025, 6, 30) | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
输入3:
Date | 0 | 1 | 2.25 | 3.5 | 4 | 5 | 6 |
---|---|---|---|---|---|---|---|
datetime.date(2022, 9, 30) | 0 | 0 | 0 | 0 | 0 | 50 | 50 |
datetime.date(2022, 12, 30) | 0 | 0 | 0 | 0 | 0 | 50 | 50 |
datetime.date(2023, 6, 30) | 0 | 0 | 0 | 0 | 0 | 50 | 50 |
datetime.date(2023, 12, 30) | 0 | 0 | 0 | 0 | 0 | 25 | 25 |
datetime.date(2024, 6, 30) | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
datetime.date(2024, 12, 30) | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
datetime.date(2025, 6, 30) | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
我希望将所有这些加在一个矩阵中作为最终输出.
非常感谢!