2016-06-27 118 views
3

亲爱的论坛我想索引患者数据列表,其中每个元素都是nx1数组。用包含数组的另一个列表索引列表

患者列表:例如10名患者,20个特征,300个数据点(列表中的每个元素是300x20阵列) 注释列表:例如10名患者,300个注释

的目的是创建具有患者值的列表,其中所述值是由选自:

  • 病人欲
  • 特征我想
  • 的注释的数据予要

有了这个伟大的论坛,我设法选择患者的帮助和功能(F1,F2,F3)与:

F1=5;F2=13;F3=74  
selected_babies =[0,1,2] 
Xfeat=[val[:,(F1,F2,F3)] for sb, val in enumerate(Patient_Matrix) if sb in selected_babies] #selecting top three fearues F1 F2 F3 datapoints 

然后我创建一个与我想要的注释相对应的索引的列表。在这种情况下1和2

label=array([1,2]) 
idx=[in1d(Annottions[sb],label) for sb in selected_babies] 
idx=[nonzero(idx[sb])[0] for sb in selected_babies] # get the indices where True 

如所述,IDX现与3个元素(由于selected_babies),其中每个元素是n个值的阵列的列表,其指示我想要的数据的索引使用。 现在我想使用此列表从创建的Xfeat中选择我的数据。 到目前为止它包含特征F1,F2和F3的所有值。我只需要所选婴儿的F1,F2,F3的1和2注释值。

我想:

Xfeat=[val[idx[sb],:] for sb, val in enumerate(Patient_Matrix) if sb in selected_babies] #selecting the datapoints in label 

但它不工作。 IndexError:索引0超出轴0的大小为0的界限。

有没有人知道如何做到这一点是正确的?

非常感谢您的帮助。

回答

1

我似乎与这个工作:

Xfeat=[val[idx[sb],:] for sb, val in enumerate(Xfeat) if sb in selected_babies] 

我仍然得到indexError,但只有一个病人的情况。我将不得不弄清楚那里会发生什么。 希望我可以帮助别人。

干杯

相关问题