考虑变量<强> SETSimule< /强>(它可以取值2或3),一个NUMPY数组<强> v。 v中的列数可被setSize整除。以下是一个小样本:
import numpy as np
setSize = 2
# the array spaces are shown to emphasize that the rows
# are made up of sets having, in this case, 2 elements each.
v = np.array([[2,5, 3,5, 1,8],
[4,6, 2,7, 5,9],
[1,8, 2,3, 1,4],
[2,8, 1,4, 3,5],
[5,7, 2,3, 7,8],
[1,2, 4,6, 3,5],
[3,5, 2,8, 1,4]])
问题:对于所有元素都是唯一的行,我需要对集合进行字母排序。 例如:集合1,14将位于集合3,5之前,集合3,5将位于集合5,1之前。 作为最后一步,我需要消除可能产生的任何重复行
在上面的示例中,具有索引1、3、5和6的数组行具有唯一的元素,
所以这些行必须按字母顺序排列。其他行不会更改。
此外,按字母顺序排列后的行v[3]
和v[6]
现在是相同的。其中一个可能会掉下来
最终输出如下所示:
v = [[2,5, 3,5, 1,8],
[2,7, 4,6, 5,9],
[1,8, 2,3, 1,4],
[1,4, 2,8, 3,5],
[5,7, 2,3, 7,8],
[1,2, 3,5, 4,6]]
我可以用下面的代码识别具有唯一元素的行,但我坚持使用字母顺序代码
s = np.sort(v,axis=1)
v[(s[:,:-1] != s[:,1:]).all(1)]
假设您删除了不合适的行,请执行以下操作:
然后,您可以使用
np.lexsort
在重新成形的数组上获取每一行的顺序:然后,您可以应用花式索引并重新调整其形状:
如果需要删除重复的行,可以这样做:
过程可视化:
样本运行:
相关问题 更多 >
编程相关推荐