这里有一个2D numpy数组:
arr = np.array([[1,2],
[2,2],
[3,2],
[4,2],
[5,3]])
我想在索引1处删除与前一个索引对应的所有重复项,并得到如下输出:
np.array([[1,2],
[5,3]])
然而,当我尝试我的代码时,它出错了。下面是我的代码:
for x in range(0, len(arr)):
if arr[x][1] == arr[x-1][1]:
arr = np.delete(arr, x, 0)
>>> IndexError: index 3 is out of bounds for axis 0 with size 2
与其尝试从数组中删除,不如使用np.unique
查找第二列中首次出现的唯一值的索引,并使用它将这些值拉出:
import numpy as np
arr = np.array([[1,2],
[2,2],
[3,2],
[4,2],
[5,3]])
u, i = np.unique(arr[:,1], return_index=True)
arr[i]
# array([[1, 2],
# [5, 3]])