python - Numpy 数组添加额外列表

标签 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)

知道这里发生了什么吗?

最佳答案

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

如果它们的长度都相同,那么你是对的,你的代码应该可以工作。但是,一旦添加不同长度的行,您就会得到确切的结果

由于您只发布 2 行数据并且都有 17 列,所以我不能肯定地说这一点。但我很确定这是你的问题

关于python - Numpy 数组添加额外列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49237844/

相关文章:

python - 为什么在 Pandas 数据框中使用 Z-score 进行标准化会生成 NaN 列?

php - 从 mysql 获取数组特定数据

c# - 如何将数组拆分为特定大小的 block ?

Python:使用另一个列表顺序对列表进行排序,具有不同的长度,并且没有 'sorted'

python - 将 Python 列表转换为有序的唯一值

python - 在窗口中定位 Canvas - Tkinter/python

javascript - 服务器端串行通过 python Tornado 聊天

Python/pylint E1101 需要有关正确对象定义的帮助

javascript - ( react )对可能为空的对象数组进行类型检查的正确方法?

python - 对基于 'if' 的列表元素进行子集化