Python 从ndarray到iterable列表/变量

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

我有下面的数组,它是一个样本列表,探针,探针值,一个布尔值来描述它是否是一个控件(不是所有控件都包含“控件”)和探针的分子量。数组是使用pandas导入并合并模板和示例导入列表的结果。示例阵列:

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样本?我需要所有探针的值。我基本上是在尝试将所有探针与控制探针的总和进行归一化。谢谢你的帮助。我正在寻找一种方法,将这些数据从数组中取出,用于各种其他事情,因此,当你的答案很好,从技术上回答了我的问题。我想我问得有点多,但我不知道我应该知道多少。再次感谢你的帮助。