Numpy数组删除重复的非特定订单,具有额外的元素优先级

时间:2017-07-06 18:07:17

标签: python arrays numpy

我有一个看起来像这样的numpy数组:

[['Apple' 'Banana' 'A']
 ['Banana' 'Apple' 'A']
 ['Banana' 'Apple' 'B']
 ['Banana' 'Apple' 'Z']
 ['Pear' 'Apple' 'Z']
 ['Apple' 'Pear' 'A']
 ['Apple' 'Orange' 'Z']]

我想首先删除重复,无论元素的顺序如何。显示为:

[['Apple' 'Banana' 'A']
 ['Banana' 'Apple' 'B']
 ['Banana' 'Apple' 'Z']
 ['Pear' 'Apple' 'Z']
 ['Apple' 'Pear' 'A']
 ['Apple' 'Orange' 'Z']]

已删除:[' Banana' '苹果' ' A']

然后删除所有' Z'当' A'或者' B'元素存在:

[['Apple' 'Banana' 'A']
 ['Banana' 'Apple' 'B']
 ['Apple' 'Pear' 'A']
 ['Apple' 'Orange' 'Z']]

无需维护行顺序。如果它可以在一步中完成,甚至更好。谢谢!

1 个答案:

答案 0 :(得分:0)

下面,a是您的数据阵列:

[list(k) + v for k, v in {tuple(sorted(set(x[:2]))) : [x[2]] for x in a}.items()]

但是,根据您的问题,目前尚不清楚应删除哪些订单商品。例如,你说:"删除:[' Banana' '苹果' ' A&#39]。然后删除所有' Z'当' A'或者' B'元素存在..." 没有删除订单项的逻辑:A,Z,B,......所以,我的代码会以任意顺序删除项目。