亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

根據當前數組中每個項目的第一個元素創建新數組

根據當前數組中每個項目的第一個元素創建新數組

至尊寶的傳說 2022-06-22 18:21:04
如果我的術語不正確,請原諒我 - 我是新手!我試圖根據數組中每個項目中第一個元素的值來隔離某些條目,并對某些列執行一些操作。這是我正在使用的數據類型的示例:[[1, 99, 400],[1, 95, 200],[2, 92, 100],[1, 85, 500],[2, 88, 300]]對于每個條件,我需要分別使用 a for loop、if 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,acc和mrt:我有幾列長的數據集,從中我將刺激(現在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,因為我預見到它會變成一個列表,計算循環中每個條件的準確性。謝謝,非常感謝您的幫助。
查看完整描述

3 回答

?
ABOUTYOU

TA貢獻1812條經驗 獲得超5個贊

據我了解,您想按索引 [0] 的值將列表拆分為兩個列表。如果是 1 則添加到cond1' 列表中,否則添加到cond2' 列表中。您可以使用以下代碼實現此目的:


cond1=[]

cond2=[]

for item in listoflists:

    if item[0] == 1:

        cond1.append(item)

    else 

        cond2.append(item)


查看完整回答
反對 回復 2022-06-22
?
慕慕森

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

(我假設您想要每個組中每列的平均值。)


查看完整回答
反對 回復 2022-06-22
?
慕婉清6462132

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


查看完整回答
反對 回復 2022-06-22
  • 3 回答
  • 0 關注
  • 148 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號