我有一个函数可以注释一些具有多个项目的基因组变体(细节鼻涕很重要)。对于每个变体,它将所有信息存储在列表中。所有变体列表都添加到列表中,最终看起来像这样:
[['chr9', 11849076, 'chr9', 12028629, 'DEL', 0, 179553, 0, 0, '', '',
0, '', 0, 0, 13, 13], ['chr3', 5577129, 'chr3', 5708227, 'DUP', 0,
131098, 0, 0, '', '', 0, '', 0, 0, 13, 13],...]
这个大的列表是由注释器函数返回的,然后我想把它转换成一个很好的numpy数组:
annotated_tn = np.array(annotated_tn, dtype="object")
然而,结果并不像预期的那样:
array([list(['chr9', 11849076, 'chr9', 12028629, 'DEL', 0, 179553, 0, 0, '', '', 0, '', 0, 0, 13, 13]),
list(['chr3', 5577129, 'chr3', 5708227, 'DUP', 0, 131098, 0, 0, '', '', 0, '', 0, 0, 13, 13]),... ],dtype=object)
由于某种原因,它为数组中的所有列表添加了一个额外的list(),使它们不可索引:
annotated_tn[:,1]
IndexError: too many indices for array
我相信输出应该是这样的:
array([['chr9', 11849076, 'chr9', 12028629, 'DEL', 0, 179553, 0, 0, '', '', 0, '', 0, 0, 13, 13], ['chr3', 5577129, 'chr3', 5708227, 'DUP', 0, 131098, 0, 0, '', '', 0, '', 0, 0, 13, 13],..], dtype=object)
知道这里发生了什么吗?
答案 0 :(得分:3)
我最好的猜测是,您的数据中有一行与其他行的列数不同。
如果它们的长度相同,那么你是对的,你的代码应该可行。但是只要你添加一个不同长度的行,就会得到你得到的确切结果
由于您只发布了2行数据且两列都有17列,因此我无法肯定地说出这一点。但我很确定这是你的问题