我在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中恢复信息的信息。
A = np.array([np.unique(a) for a in A])来重述我有以下内容
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发布于 2014-05-20 23:58:06
首先,获取A的唯一索引,然后从A和B中提取它们。
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)])https://stackoverflow.com/questions/23771444
复制相似问题