使用包含数组

时间:2016-06-27 12:47:55

标签: python arrays list indexing

亲爱的论坛我想用一个注释列表索引患者数据列表,其中每个元素都是一个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个元素的List(由于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 个答案:

答案 0 :(得分:1)

我似乎对此有用:

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

我仍然得到indexError,但仅针对某位患者。我将不得不弄清楚那里发生了什么。 希望我能帮助别人。

干杯