首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Python中的列表中恢复数据

从Python中的列表中恢复数据
EN

Stack Overflow用户
提问于 2014-05-20 23:09:32
回答 1查看 376关注 0票数 0

我在python中有两个列表,比如A和B。

列表是具有一些整数索引的列表列表,例如[[2,3,1,3,2,3,3], [4,2,1,4],[5,4,3,3,3,4,]...]等。

列表B,具有相同的结构,但不是整数,而是numpy数组。[[array([0, 0]), array([0, 0]), array([0, 1]) ...][[array([0, 0]), array([0, 1])...]...]

这些列表是相关的,因此每个numpy数组对应一个整数,换句话说,A的子列表和B的子列表具有相同的大小。例如

[[2,3,3,3,2,4]...]

[[array([0, 0]), array([0, 1]), array([0, 1]), array([0, 1]), array([0, 0]), array([1, 0])]...]

A的子列表中的第一个整数"2“被链接到B的子列表中的第一个numpy数组。

正如您所看到的,有重复的整数,因此重复的numpy数组。我想恢复唯一的索引,而不重复,因此它们的数组。

以上面的例子为例,返回过程应该如下所示:

[[2,3,4]...]

[[array([0, 0]), array([0, 1]), array([1, 0])]...]

如何从列表A中恢复唯一元素,以及它们在列表b中对应的numpy数组?

我的第一次尝试使用了numpy.unique函数,这样我就可以高效地恢复列表A,但随后我丢失了从B中恢复信息的信息。

代码语言:javascript
复制
A = np.array([np.unique(a) for a in A])

来重述我有以下内容

代码语言:javascript
复制
import numpy as np
A = [] # PUT A REAL (short) LIST HERE 
B = [] # PUT A REAL (short) LIST HERE
uniqueA = np.array([np.unique(a) for a in A])
print uniqueA #prints what I want/dont want
expectA = [1,4] # put what you would expect to get back
#ask additional questions here
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-20 23:58:06

首先,获取A的唯一索引,然后从AB中提取它们。

代码语言:javascript
复制
import numpy as np

A = [[2,3,1,3,2,3,3], [4,2,1,4]]
B = [[np.zeros(2)]*len(A[0]), [np.zeros(2)]*len(A[1])]

indices = np.array([np.unique(a, True)[1] for a in A])

A = np.array([np.array(arr)[index] for arr, index in zip(A, indices)])
B = np.array([np.array(arr)[index] for arr, index in zip(B, indices)])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23771444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档