我有兩個Subjects通過np.loadtxtPython 加載的資料源 ( )。
回圈for ROI in ROIs嵌套在回圈中for Subject in Subjects。
PLE = sp.stats.linregress(np.log(Ideal_frequency), np.log(Data))我的目標是將每個 ROI 的兩個主題的計算結果附加到字典中。代碼應將兩個受試者的 PLE[0] 的結果一起附加到每個 ROI 的一個串列或陣列中。
我無法解決的問題是我的代碼僅將計算結果附加PLE[0]到. 因此,不包括在內。Subject1PLE_dictSubject2
例如,通過PLE_dictyield 列印結果:
{1: [-0.9924575013746104],
2: [-0.8905778114042852],
3: [-1.0143346946069933],
.... # Cut the data here
數字 1 到 3 代表前三個 ROI,方括號中的值代表PLE[0]. 兩者都是正確的。但是,我還想將 subject2 的結果附加到每個 ROI 的陣列或串列中。
這是我當前的代碼:
import numpy as np
import scipy as sp
import itertools as it
from scipy import stats
Ideal_frequency = np.loadtxt("/volumes/... .1D")
ROIs = it.chain(range(1,181), range(1001,1181)) # ROIs 1-180 and 1001-1180
Subjects = ["Subject1", "Subject2"]
PLE_dict = {}
for Subject in Subjects:
for ROI in ROIs:
Data = np.loadtxt(f"/volumes/seagate/{Subject}/G360_{ROI}_{Subject}.1D")
PLE = sp.stats.linregress(np.log(Ideal_frequency), np.log(Data))
if ROI not in PLE_dict:
PLE_dict[ROI] = [PLE[0]]
else:
PLE_dict[ROI].append(PLE[0])
print(PLE_dict)
此螢屏截圖可能更好地描述了該問題。這是 的輸出print(PLE_dict)。它顯示了PLE[0]最后一個 ROI 的結果(每行一個 ROI)。但這些結果僅適用于subject1. 我的目標是將結果添加subject2到單個 ROI 的相同行中。

uj5u.com熱心網友回復:
您可以通過以下方式解決此問題:
if ROI not in PLE_dict:
PLE_dict[ROI] = [PLE[0]]
else:
PLE_dict[ROI].append(PLE[0])
跑步
PLE_dict = {}
for Subject in range(2):
for ROI in range(2):
if ROI not in PLE_dict:
PLE_dict[ROI] = [Subject*ROI]
else:
PLE_dict[ROI].append(Subject*ROI)
print(PLE_dict)
給
{0: [0, 0], 1: [0, 1]}
還
it.chain(range(1,181), range(1001,1181)) # ROIs 1
是一個迭代器,一旦迭代,它是空的,不會運行第二次。所以要么把它變成一個串列,直接放到回圈中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/496483.html
