Python 从ndarray到iterable列表/变量
我有下面的数组,它是一个样本列表,探针,探针值,一个布尔值来描述它是否是一个控件(不是所有控件都包含“控件”)和探针的分子量。数组是使用pandas导入并合并模板和示例导入列表的结果。示例阵列:Python 从ndarray到iterable列表/变量,python,pandas,multidimensional-array,Python,Pandas,Multidimensional Array,我有下面的数组,它是一个样本列表,探针,探针值,一个布尔值来描述它是否是一个控件(不是所有控件都包含“控件”)和探针的分子量。数组是使用pandas导入并合并模板和示例导入列表的结果。示例阵列: array([('Sample1', 'Control1', 846, True, 130), ('Sample1', 'Control2', 527, True, 202), ('Sample1', 'Control3', 493, True, 274),
array([('Sample1', 'Control1', 846, True, 130),
('Sample1', 'Control2', 527, True, 202),
('Sample1', 'Control3', 493, True, 274),
('Sample1', 'Control4', 426, True, 418),
('Sample1', 'Control4', 191, True, 490),
('Sample1', 'Probe1', 1647, False, 138),
('Sample1', 'Probe2', 1146, False, 170),
('Sample1', 'Probe3', 958, False, 210),
('Sample1', 'Probe4', 814, False, 242),
('Sample1', 'Probe5', 301, False, 282),
('Sample2', 'Control1', 1355, True, 130),
('Sample2', 'Control2', 785, True, 202),
('Sample2', 'Control3', 936, True, 274),
('Sample2', 'Control4', 748, True, 418),
('Sample2', 'Control4', 335, True, 490),
('Sample2', 'Probe1', 2532, False, 138),
('Sample2', 'Probe2', 1679, False, 170),
('Sample2', 'Probe3', 1488, False, 210),
('Sample2', 'Probe4', 1387, False, 242),
('Sample2', 'Probe5', 500, False, 282),
('Sample3', 'Control1', 1701, True, 130),
('Sample3', 'Control2', 936, True, 202),
('Sample3', 'Control3', 1048, True, 274),
('Sample3', 'Control4', 705, True, 418),
('Sample3', 'Control4', 308, True, 490),
('Sample3', 'Probe1', 2957, False, 138),
('Sample3', 'Probe2', 1994, False, 170),
('Sample3', 'Probe3', 1663, False, 210),
('Sample3', 'Probe4', 1300, False, 242),
('Sample3', 'Probe5', 545, False, 282)],
dtype=[('FILENAME', 'O'), ('Probe', 'O'), ('Value', '<i8'), ('QC', '?'), ('MW', '<i8')])
数组([('Sample1','Control1',846,True,130),
('Sample1','Control2',527,True,202),
('Sample1','Control3',493,True,274),
('Sample1','Control4',426,True,418),
('Sample1','Control4',191,True,490),
('Sample1','Probe1',1647,False,138),
('Sample1','Probe2',1146,False,170),
('Sample1','Probe3',958,False,210),
('Sample1','Probe4',814,False,242),
('Sample1','Probe5',301,False,282),
('Sample2','Control1',1355,True,130),
('Sample2','Control2',785,True,202),
('Sample2','Control3',936,True,274),
('Sample2','Control4',748,True,418),
('Sample2','Control4',335,True,490),
('Sample2','Probe1',2532,False,138),
('Sample2','Probe2',1679,False,170),
('Sample2','Probe3',1488,False,210),
('Sample2','Probe4',1387,False,242),
('Sample2','Probe5',500,False,282),
('Sample3','Control1',1701,True,130),
('Sample3','Control2',936,True,202),
('Sample3','Control3',1048,True,274),
('Sample3','Control4',705,True,418),
('Sample3','Control4',308,True,490),
('Sample3','Probe1',2957,False,138),
('Sample3','Probe2',1994,False,170),
('Sample3','Probe3',1663,False,210),
(‘样本3’、‘问题4’、1300、假、242),
('Sample3','Probe5',545,False,282)],
数据类型=[('FILENAME','O'),('Probe','O'),('Value','p>,不带熊猫:
您有一个元组数组。
python中的元组是例如mytuple=(1,3,1)
要从元组访问元素,请使用:
mytuple[0] # for the first element
要想通过列表了解更多信息,请尝试:
tupleList =[(1,3,1), (2,6,2)]
for el in tupleList:
print(el[0]) # prints first element of all tuples in list
我想产生一个单独的iterable列表保存在一个变量
对于每个样本,例如:我可以取样本1,算出总和
在标记为true的探测值中,将其存储在
变量,然后对该数字进行处理。结果是什么
最好的方法是什么
建议:与其一个接一个地创建大量新变量,更具可伸缩性的方法是将结果封装在某种类型的数据结构中
既然你已经使用了熊猫,正如你所指出的,你可能想在这里考虑熊猫>代码> GROPPB/<代码>。
>>> import pandas as pd
>>> data = pd.DataFrame(data)
>>> data[data.QC==1].groupby('FILENAME')['Value'].sum()
FILENAME
Sample1 2483
Sample2 4159
Sample3 4698
Name: Value, dtype: int64
现在,如果您真的想分配单独的变量,您可以使用以下内容来解压这些结果:
>>> s1, s2, s3 = data[data.QC==1].groupby('FILENAME')['Value'].sum()
>>> s1
2483
>>> s2
4159
>>> s3
4698
>>> s1, s2, s3
(2483, 4159, 4698)
要根据控制探测的总和对所有探测进行规格化:
>>> sums = data[data.QC==1].groupby('FILENAME', as_index=False)['Value'].sum()
>>> merged = data[data.QC==0].merge(sums, on='FILENAME', suffixes=('', '_sum'))
>>> merged['prop'] = merged['Value'] / merged['Value_sum']
>>> merged
FILENAME Probe Value QC MW Value_sum prop
0 Sample1 Probe1 1647 False 138 2483 0.6633
1 Sample1 Probe2 1146 False 170 2483 0.4615
2 Sample1 Probe3 958 False 210 2483 0.3858
3 Sample1 Probe4 814 False 242 2483 0.3278
4 Sample1 Probe5 301 False 282 2483 0.1212
5 Sample2 Probe1 2532 False 138 4159 0.6088
6 Sample2 Probe2 1679 False 170 4159 0.4037
7 Sample2 Probe3 1488 False 210 4159 0.3578
8 Sample2 Probe4 1387 False 242 4159 0.3335
9 Sample2 Probe5 500 False 282 4159 0.1202
10 Sample3 Probe1 2957 False 138 4698 0.6294
11 Sample3 Probe2 1994 False 170 4698 0.4244
12 Sample3 Probe3 1663 False 210 4698 0.3540
13 Sample3 Probe4 1300 False 242 4698 0.2767
14 Sample3 Probe5 545 False 282 4698 0.1160
您好,谢谢您的回答和时间。我知道如何从列表中获取值,但我的问题是我不知道如何将样本分离出来并单独获取信息。理想情况下,我需要能够在某种类型的函数中一般地这样做。谢谢您。这是否也允许我对这些值进行单独迭代我分组的每个样本?从更大的角度来看,我需要计算出真实探测的总和,我可以使用你的方法,然后我需要得到每个样本中每个探测的值,除以真实探测的总和并返回值。是的,这是一个非常灵活的工具。请参阅以获得一些解释。当你说“获取每个样本中每个探针的值,"你是说只有Probe1,Probe2,…,还是还有Control1,Control2样本?我需要所有探针的值。我基本上是在尝试将所有探针与控制探针的总和进行归一化。谢谢你的帮助。我正在寻找一种方法,将这些数据从数组中取出,用于各种其他事情,因此,当你的答案很好,从技术上回答了我的问题。我想我问得有点多,但我不知道我应该知道多少。再次感谢你的帮助。