如何从含两个数组的列表中提取对应位置元素组成新列表
解决numpy数组列表的列提取问题
嘿,我来帮你搞定这个需求!你的列表里装的是两个numpy数组,直接用l[0]和l[1]只能拿到单个完整数组,而你需要的是把两个数组对应位置的元素分别归为一组对吧?
这里有两种简单的方法可以实现:
方法一:用numpy的转置功能
既然你已经在使用numpy了,转置操作是最直接的方式:
import numpy as np l = [np.array([16, 19]), np.array([24, 17])] # 先把列表转换成二维numpy数组 two_d_arr = np.array(l) # 转置后提取每一列,再转成普通列表 result = two_d_arr.T.tolist() # 现在result就是你要的[[16,24], [19,17]] new_list1 = result[0] # [16,24] new_list2 = result[1] # [19,17]
方法二:纯Python的zip函数
如果不想依赖numpy,用内置的zip函数也能轻松搞定:
l = [np.array([16, 19]), np.array([24, 17])] # 用zip解压两个数组的对应元素,再转成列表 col1, col2 = zip(*l) new_list1 = list(col1) # [16,24] new_list2 = list(col2) # [19,17]
简单说下原理:zip(*l)会把两个数组的第一个元素、第二个元素分别配对,相当于把原来的“行”转换成了“列”,再转成列表就是你要的结果啦。
内容的提问来源于stack exchange,提问作者Will
相关产品推荐
相关产品推荐

