我有一个函数可以用多个项目注释一些基因组变体(细节并不重要)。对于每个变体,它将所有信息存储在列表中。所有变体列表都会添加到最终看起来像这样的列表中:
[['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)
知道这里发生了什么吗?
最佳答案
我的最佳猜测是,您的数据中有一行的列数与其他行不同。
如果它们的长度都相同,那么你是对的,你的代码应该可以工作。但是,一旦添加不同长度的行,您就会得到确切的结果
由于您只发布 2 行数据并且都有 17 列,所以我不能肯定地说这一点。但我很确定这是你的问题
关于python - Numpy 数组添加额外列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49237844/