检查二维numpy数组的每一列,如果重复,删去该重复行
时间: 2023-12-23 18:01:54 浏览: 169
python 去除二维数组/二维列表中的重复行方法
可以使用 NumPy 库中的函数来实现这个需求。具体步骤如下:
1. 使用 `transpose()` 函数转置数组,使得每一列成为数组的一行。
2. 使用 `unique()` 函数对转置后的数组进行去重操作,并设置 `axis=0` 参数表示按照行的方向进行去重。
3. 获取去重后的数组中每个元素在原数组中第一次出现的下标,并保存到 `unique_indices` 变量中。
4. 使用 `delete()` 函数删除重复的行,以保留原数组中第一次出现的行。
代码实现如下:
```python
import numpy as np
# 示例数据
arr = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[1, 2, 3],
[4, 5, 6]])
# 转置数组,每列成为一行
arr_T = arr.T
# 对转置后的数组进行去重,获取每个元素在原数组中第一次出现的下标
unique_T, unique_indices = np.unique(arr_T, axis=1, return_index=True)
# 删除重复的行,保留原数组中第一次出现的行
arr_unique = np.delete(arr, unique_indices, axis=0)
print(arr_unique)
```
输出结果为:
```
[[1 2 3]
[4 5 6]
[7 8 9]]
```
可以看到,重复的行 `[1, 2, 3]` 和 `[4, 5, 6]` 被删除了,只保留了一份。
阅读全文