gpt4 book ai didi

data-structures - python : Populate lower triangle matrix from a list

转载 作者:行者123 更新时间:2023-12-04 07:15:00 25 4
gpt4 key购买 nike

我在 csv 中有机票可用性的离散时间数据格式。这用于表示出发和到达时间窗口组合的机票可用性。假设我的一天分为 4 个时间段 -

12:01 AM to 6:00 AM, 
6:01 AM to 12:00 PM,
12:01 PM to 6:00 PM,
6:01 PM to 12:00 AM

1 表示有可用于该出发和到达组合的票,否则为 0。对于此示例,假设机票适用于所有出发-到达组合,csv 文件将包含以下数据:
1,1,1,1,1,1,1,1,1,1

此数据用于表示此矩阵(请注意,某些组合在此处变为零,因为它们是 24 小时内不合逻辑的时间组合):
                    Departure time period           
12:01 AM to 6:00 AM | 6:01 AM to 12:00 PM | 12:01 PM to 6:00 PM | 6:01 PM to 12:00 AM|
Arrival time period ------------------- | ---------------------|---------------------|---------------------|
12:01 AM to 6:00 AM 1 | 0| 0| 0|
6:01 AM to 12:00 PM 1 | 1| 0| 0|
12:01 PM to 6:00 PM 1 | 1| 1| 0|
6:01 PM to 12:00 AM 1 | 1| 1| 1|
csv文件具有多天的此数据。我已将此数据作为字典读入,日期为键,可用性组合为列表。数据处理正在 Python 2.7中完成.对于特定的一天,我现在可以使用日期键检索可用性列表。

现在,我有两个问题:
  • 如何将数据转换为矩阵
    类型数据结构。从本质上讲,这涉及将列表转换为较低的
    三角矩阵加上对角元素。我试过使用numpy 中的 reshape 功能但这并没有达到这个结果。
  • 一旦我转换了矩阵 - 我想以图形方式将可用性表示为主题网格 - 所有 1 为绿色方块和 0
    作为红色方块。这可以在 Python 中实现吗?如何?

  • 我假设阅读 csv作为字典,然后将可用性元素存储在列表中是一种方法,因为它看起来相当简单。如果您觉得有更聪明的方法可以做到这一点,请修改该方法。

    大家有什么想法吗?!?

    最佳答案

    import numpy as np
    import matplotlib.pyplot as plt

    data = [1,1,1,1,1,1,1,1,1,1]
    arr = np.zeros((4,4))
    indices = np.tril_indices(4)
    arr[indices] = data
    print(arr)

    # array([[ 1., 0., 0., 0.],
    # [ 1., 1., 0., 0.],
    # [ 1., 1., 1., 0.],
    # [ 1., 1., 1., 1.]])


    plt.imshow(arr, interpolation='nearest', cmap=plt.get_cmap('RdYlGn'))
    plt.show()

    地块

    enter image description here

    关于data-structures - python : Populate lower triangle matrix from a list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17517787/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com