Numpy数组增加了额外的列表

时间:2018-03-12 14:35:30

标签: python arrays list numpy

我有一个函数可以注释一些具有多个项目的基因组变体(细节鼻涕很重要)。对于每个变体,它将所有信息存储在列表中。所有变体列表都添加到列表中,最终看起来像这样:

[['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)

知道这里发生了什么吗?

1 个答案:

答案 0 :(得分:3)

我最好的猜测是,您的数据中有一行与其他行的列数不同。

如果它们的长度相同,那么你是对的,你的代码应该可行。但是只要你添加一个不同长度的行,就会得到你得到的确切结果

由于您只发布了2行数据且两列都有17列,因此我无法肯定地说出这一点。但我很确定这是你的问题