让我们考虑一个二维数组 A
2 3 5 7
2 3 5 7
1 7 1 4
5 8 6 0
2 3 5 7
第一行,第二行和最后一行是相同的。我要查找的算法应该返回一个只有一条相同行的二维数组,以及得到的二维数组中每一行的相同行数。 我使用低效的朴素算法来做到这一点:
import numpy
A=numpy.array([[2, 3, 5, 7],[2, 3, 5, 7],[1, 7, 1, 4],[5, 8, 6, 0],[2, 3, 5, 7]])
i=0
end = len(A)
while i<end:
print i,
j=i+1
numberID = 1
while j<end:
print j
if numpy.array_equal(A[i,:] ,A[j,:]):
A=numpy.delete(A,j,axis=0)
end-=1
numberID+=1
else:
j+=1
i+=1
print A, len(A)
预期结果:
array([[2, 3, 5, 7],
[1, 7, 1, 4],
[5, 8, 6, 0]]) # 2d-array freed from identical lines
array([3,1,1]) # number identical arrays per line
这个算法看起来像在numpy中使用python native这么低效。谢谢你的帮助。