我有12个仪器的数据分组为3x4(每组4个仪器:N1,N2,N3,N4; C1,C2,C3,C4; S1,S2,S3,S4;)。每个工具有2组数据:H和T.数据集来自不同的Excel电子表格。
执行此互动的最佳方式是什么?使用列表创建字典,矩阵......?在Matlab中,我将创建3个矩阵,每个矩阵有4列,但我不知道如何在Python上执行此操作(刚开始使用它)。
首先,我尝试创建上述变量(N1,C3,S4 ...)并附加来自不同excel电子表格的值:
sheets = ['S_WH', 'C_WH', 'N_WH']
for i in sheets:
path = r"\\uniwa.uwa.edu.au\userhome\students2\22371812\My Documents\Documents\FieldTechniques"
filename = i + '.xlsx'
sheetHeights = openpyxl.load_workbook(os.path.join(path,filename), data_only=True)
heights = sheetHeights.get_sheet_by_name("Sheet1")
Time=[]
H1=[]
H2=[]
H3=[]
H4=[]
for row in range (2, heights.max_row+1):
Time.append(heights['A' + str(row)].value)
H1.append(heights['B' + str(row)].value)
H2.append(heights['C' + str(row)].value)
H3.append(heights['D' + str(row)].value)
H4.append(heights['E' + str(row)].value)
首先,如何获取这些列表(H1,H2 ......)并附加到字典中(这是我认为它可能是最好的方式)?
其次,我必须对T值做同样的事情,所以所有的站都有H和T相关。第三个值是S,即H和T的总和。我不知道如何做到这一点。如果有人可以帮助我(甚至提供一些提示),那就太棒了。
答案 0 :(得分:0)
最佳在这里有点含糊不清。 Lists
有他们的优点和优点缺点,dictionaries
,arrays
以及所有其他数据结构也是如此。
最佳结构取决于您的需求(最小内存,最短搜索时间等)。
只要没有引入主要约束,我就会采用我认为最简单的解决方案 - 包含密钥和3值列表作为其值的字典 - {instrument : [H,T,S]}
玩具示例:
N1,N2 = 'a','b'
H_N1, H_N2 = 1,2
T_N1, T_N2 = 10,20
instruments = [N1, N2]
# assuming you already have H,T saved
H = [H_N1, H_N2]
T = [T_N1, T_N2]
# create an list S, and fill it using list comprehension
S = [H[i] + T[i] for i in range(len(T))]
# can also be done by a loop
S = []
for i in range(len(T)):
S.append(T[i] + H[i])
# add the lists together so they would all be stored together as a dictionary value
zip1 = zip(H,T,S)
zip2 = zip(instruments, zip1)
d = dict((key,value) for (key,value) in zip2)
print d
输出= {'a': (1, 10, 11), 'b': (2, 20, 22)}