3 回答
TA贡献1812条经验 获得超5个赞
据我了解,您想按索引 [0] 的值将列表拆分为两个列表。如果是 1 则添加到cond1' 列表中,否则添加到cond2' 列表中。您可以使用以下代码实现此目的:
cond1=[]
cond2=[]
for item in listoflists:
if item[0] == 1:
cond1.append(item)
else
cond2.append(item)
TA贡献1856条经验 获得超17个赞
使用简单的循环,您可以显示如下方式:
data=[[1, 99, 400],
[1, 95, 200],
[2, 92, 100],
[1, 85, 500],
[2, 88, 300]]
groups = [], []
for row in data:
groups[row[0]-1].append(row)
for group in groups:
print(np.mean(group, axis=0)) # means of each column by group
但是对于这种类型的任务,通常最好使用 pandas 数据框
df = pd.DataFrame(data, columns=["stim", "acc", "mrt"])
for value in df.stim.unique():
print(df[df.stim == value].mean())
或者
for i, group in df.groupby("stim"):
print(i, group.mean())
(我假设您想要每个组中每列的平均值。)
TA贡献1804条经验 获得超2个赞
使用熊猫groupby:
>>> a = [[1, 99, 400],
[1, 95, 200],
[2, 92, 100],
[1, 85, 500],
[2, 88, 300]]
>>> df = pd.DataFrame(a)
>>> df
0 1 2
0 1 99 400
1 1 95 200
2 2 92 100
3 1 85 500
4 2 88 300
>>> data = df.groupby([0])
>>> cond = data.groups
>>> df.loc[cond[1]]
0 1 2
0 1 99 400
1 1 95 200
3 1 85 500
>>> df.loc[cond[2]]
0 1 2
2 2 92 100
4 2 88 300
添加回答
举报