如何移除numpy数组genes中的list结构,仅保留元素?
移除Numpy数组中的嵌套List结构
遇到numpy数组里不小心嵌套了list的情况太常见了,我给你几个实用的解决办法,根据你的数组结构选就行:
针对你给出的特定单嵌套场景
你的示例数组是array([[list(['0', '0', '1', ...])]]),外层是二维数组,内部只嵌套了一个一维list,最简单的方式就是直接索引到内部的list,再转成numpy数组:
import numpy as np # 假设你的数组是genes cleaned_genes = np.array(genes[0][0])
执行后就能得到一个只包含原list内部元素的numpy数组。
适配多嵌套元素的通用方法
如果你的数组里有多个嵌套的list(比如结构是array([[list(a)], [list(b)], [list(c)]])),可以用列表推导式逐个提取元素,再统一转成数组:
cleaned_genes = np.array([item for subarr in genes for item in subarr[0]])
还有个更简洁的方式:先用flatten()把外层的数组结构展平,再用np.concatenate()把所有嵌套的list合并成一个numpy数组:
cleaned_genes = np.concatenate(genes.flatten())
可选:转换元素类型
如果原list里的元素是字符串(比如你的示例里的'0'、'1'),转成numpy数组后还是字符串类型,要是需要数值类型,可以加一步类型转换:
cleaned_genes = cleaned_genes.astype(int) # 转成整数类型,按需改成float等
内容的提问来源于stack exchange,提问作者ankit
相关产品推荐
相关产品推荐

