猿问

如何将变量附加到二维数组中?

我想将输入附加到二维数组中的特定位置。任务是输入我自己的数据来替换数组中的一个位置。


#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)

如果有人想让我详细说明这个问题,请告诉我


慕姐4208626
浏览 237回答 3
3回答

忽然笑

你已经结合了几个半解决方案;这是不需要的。您只需查找路线和日期索引: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]

炎炎设计

首先python使用列表而不是数组。要附加到列表,请使用 .append 函数,例如:List_name.append(Insert_data_to_append_here)在你的情况下:BusData.append(BusData[route_pos][day_pos])代替:DataPos = BusData[RoutePos][DayPos] BusData.append(DataPos)所以它合并成一行,因为它使它更干净。

繁华开满天机

我不确定这是否合适,因为也许您需要列表形式的数据。但如果没有,Pandas 会让这件事变得微不足道。import pandas as pd# the fourth row had an extra digit, I deleted a zerodf = pd.DataFrame(data=BusData, index=Route, columns=Days)df=df.Tdf.loc['Mon 1', 'Bus B'] = 25df.loc['Wed 1'] = 100df.loc[:,'Bus F'] = 999df         Bus A   Bus B  Bus C   Bus D    Bus E     Bus FMon 1      0       25      2       1       -1       999Tue 1      0       1       0       0       -1       999Wed 1      100     100     100     100     100      999Thu 1      2       0       -1      0       -2       999Fri 1      2       1       -2      0       -4       999Mon 2      4       2       -2      0       -10      999Tue 2      0       0       -3      0       -2       999Wed 2      3       0       -1      0       0        999Thu 2      4       0       0       0       0        999Fri 2      -2      0       0       0       0        999Mon 3      -5      1       -2      2       0        999Tue 3      0       0       0       0       1        999Wed 3      0       0       1       0       2        999Thu 3      3       0       1       0       -3       999Fri 3      4       2       1       0       1        999Mon 4      -1      0       1       0       1        999Tue 4      8       0       -1      0       3        999Wed 4      1       1       -1      0       -1       999Thu 4      1       0       2       0       0        999Fri 4      -2      0       -1      0       0        999
随时随地看视频慕课网APP

相关分类

Python
我要回答