你怎么一个变量追加到一个二维数组?

问题描述 投票:-2回答:4

我想输入追加到在2D阵列中的特定位置。任务是输入我自己的数据替换数组中的位置。

#Array
Days = ["Mon 1","Tue 1","Wed 1","Thu 1","Fri 1",
        "Mon 2","Tue 2","Wed 2","Thu 2","Fri 2",
        "Mon 3","Tue 3","Wed 3" ,"Thu 3","Fri 3",
        "Mon 4","Tue 4","Wed 4","Thu 4","Fri 4"]

Route = ["Bus A","Bus B","Bus C","Bus D","Bus E","Bus F"]
            #The array in each bus is (Mon 1 - Fri 4 in each bus)
BusData = [[0,0,0,2,2,4,0,3,4,-2,-5,0,0,3,4,-1,8,1,1,-2],          #Bus A
            [0,1,0,0,1,2,0,0,0,0,1,0,0,0,2,0,0,1,0,0],             #Bus B
            [2,0,-1,-1,-2,-2,-3,-1,0,0,-2,0,1,1,1,1,-1,-1,2,-1],   #Bus C
            [1,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0],           #Bus D
            [-1,-1,-1,-2,-4,-10,-2,0,0,0,0,1,2,-3,1,1,3,-1,0,0],   #Bus E
            [0,-5,-5,-5,-4,-3,-5,0,0,0,0,-2,-3,1,1,1,0,0,-2,-5]]   #Bus F

例如,我已经输入了一天的路线,并试图使用索引位置来放置它在数组中。

我试图做这样一个解决方案:

        #Input values in array
    for i in Route:    #Finding index of input in array 
        if Bus == i:
            RoutePos = Route.index(i)

    for i in Days:   #Finding index of input in array
        if Day == i:
            DayPos = Days.index(i)


    DataPos = BusData[RoutePos][DayPos]
    BusData.append(DataPos)

    print(BusData)

如果有人要我详细说明的问题,让我知道

python arrays
4个回答
1
投票

你多种组合解决方案的一半;这是没有必要的。您只需查找路线和日期指标:

route_pos = Route.index(Bus)
day_pos = Days.index(Day)
BusData.append(BusData[route_pos][day_pos]

不过,我不能肯定这就是你想要的。这个附加一个整数到2D列表,比如:

[[0,0,0,2,2,4,0,3,4,-2,-5,0,0,3,4,-1,8,1,1,-2],         #Bus A
 [0,1,0,0,1,2,0,0,0,0,1,0,0,0,2,0,0,1,0,0],             #Bus B
 [2,0,-1,-1,-2,-2,-3,-1,0,0,-2,0,1,1,1,1,-1,-1,2,-1],   #Bus C
 [1,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0],           #Bus D
 [-1,-1,-1,-2,-4,-10,-2,0,0,0,0,1,2,-3,1,1,3,-1,0,0],   #Bus E
 [0,-5,-5,-5,-4,-3,-5,0,0,0,0,-2,-3,1,1,1,0,0,-2,-5],   #Bus F
 2   # New element
]

0
投票

我不知道这是否是合适的,因为也许你需要以列表形式的数据。但如果不是,熊猫将使这微不足道的。

import pandas as pd
# the fourth row had an extra digit, I deleted a zero
df = pd.DataFrame(data=BusData, index=Route, columns=Days)

df=df.T

df.loc['Mon 1', 'Bus B'] = 25
df.loc['Wed 1'] = 100
df.loc[:,'Bus F'] = 999

df

         Bus A   Bus B  Bus C   Bus D    Bus E     Bus F
Mon 1      0       25      2       1       -1       999
Tue 1      0       1       0       0       -1       999
Wed 1      100     100     100     100     100      999
Thu 1      2       0       -1      0       -2       999
Fri 1      2       1       -2      0       -4       999
Mon 2      4       2       -2      0       -10      999
Tue 2      0       0       -3      0       -2       999
Wed 2      3       0       -1      0       0        999
Thu 2      4       0       0       0       0        999
Fri 2      -2      0       0       0       0        999
Mon 3      -5      1       -2      2       0        999
Tue 3      0       0       0       0       1        999
Wed 3      0       0       1       0       2        999
Thu 3      3       0       1       0       -3       999
Fri 3      4       2       1       0       1        999
Mon 4      -1      0       1       0       1        999
Tue 4      8       0       -1      0       3        999
Wed 4      1       1       -1      0       -1       999
Thu 4      1       0       2       0       0        999
Fri 4      -2      0       -1      0       0        999

0
投票

首先Python使用列表不是数组。要追加到一个列表使用.append的功能,例如:

List_name.append(Insert_data_to_append_here)

你的情况:

BusData.append(BusData[route_pos][day_pos])

代替:

DataPos = BusData[RoutePos][DayPos]
BusData.append(DataPos)

所以因为它使得清洁器被组合成一个线。


0
投票

由于目前还不清楚你在寻找什么,这个答案假定基础上所作出的澄清,到目前为止有以下三种情况:

  1. BusRoute内完全匹配的字符串输入,
  2. DayDays内完全匹配的字符串输入,
  3. BusDataRouteDays的相同顺序进行排序。

然后,它是这么简单:

route_pos = Route.index(Bus)
day_pos = Days.index(Day)
BusData[route_pos][day_pos] == some_data_to_replace

其中some_data_to_replace是要替换为特定BusDay路由信息。

例如:

Bus = input("Enter the exact bus info: ")                 # e.g. "Bus C"
Day = input("Enter the exact day info: ")                 # e.g. "Mon 2"
Data = int(input("Enter the route info to replace: "))     # e.g. 99

route_pos = Route.index(Bus)                              # position 2
day_pos = Days.index(Day)                                 # position 5 
BusData[route_pos][day_pos] == some_data_to_replace       # "row" 2, "col" 5 is replaced

BusData

# [[0,0,0,2,2,4,0,3,4,-2,-5,0,0,3,4,-1,8,1,1,-2],         # Bus A
#  [0,1,0,0,1,2,0,0,0,0,1,0,0,0,2,0,0,1,0,0],             # Bus B
#  [2,0,-1,-1,-2,99,-3,-1,0,0,-2,0,1,1,1,1,-1,-1,2,-1],   # Bus C (pos 2) Mon 1 (pos 5) is replaced
#  [1,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0],           # Bus D
#  [-1,-1,-1,-2,-4,-10,-2,0,0,0,0,1,2,-3,1,1,3,-1,0,0],   # Bus E
#  [0,-5,-5,-5,-4,-3,-5,0,0,0,0,-2,-3,1,1,1,0,0,-2,-5]]   # Bus F
© www.soinside.com 2019 - 2024. All rights reserved.