首页 > 解决方案 > 根据当前数组中每个项目的第一个元素创建新数组

问题描述

如果我的术语不正确,请原谅我 - 我是新手!

我试图根据数组中每个项目中第一个元素的值来隔离某些条目,并对某些列执行一些操作。这是我正在使用的数据类型的示例:

[[1, 99, 400],
[1, 95, 200],
[2, 92, 100],
[1, 85, 500],
[2, 88, 300]]

对于每个条件,我需要分别使用 a for loopif statement和算术计算第 2 列和第 3 列的平均值(反映在第 1 列中,其中值为 1 或 2)。

我正在尝试将上述数组拆分为每个条件的两个单独的数组,然后使用numpy.mean. 这是我希望列表的样子:

cond1 = [[1, 99, 400], [1, 95, 200], [1, 85, 500]]
cond2 = [[2, 92, 100], [2, 88, 300]]

我坚持如何根据第一个元素将这些条件分成两个新数组。这是我在谷歌上搜索切片后得到的最远距离……但我被卡住了!

for x in stim:
    if stim_acc[0]==1.0:
        np.where(stim_acc[0] = 1.0)
        cond1 = [[s,a,rt] for s, a, rt in zip(stim, acc, mrt)]
        print(cond1)

关于stim,accmrt:

我有几列长的数据集,从中我将刺激(现在stim)、准确性(现在acc)和平均反应时间(现在mrt)条目分离到一个新列表中(本文中的第一个)。我这样做是这样的:

stim = data[:,1]
 acc = data[:,3]
 mrt = data[:,4]

 stim_acc = [[s, a, rt] for s, a, rt in zip(stim, acc, mrt)]
 print(stim_acc)

我先发制人地命名了新列表stim_acc,因为我预见到它会变成一个列表,计算循环中每个条件的准确性。

谢谢,非常感谢您的帮助。

标签: pythonarraysnumpyconditional-statementsslice

解决方案


据我了解,您想按索引 [0] 的值将列表拆分为两个列表。如果是 1 则添加到cond1' 列表中,否则添加到cond2' 列表中。您可以使用以下代码实现此目的:

cond1=[]
cond2=[]
for item in listoflists:
    if item[0] == 1:
        cond1.append(item)
    else 
        cond2.append(item)

推荐阅读