python - 如果第二个元素不是重复的,则删除 2d numpy 数组的行
问题描述
我有一个像这样的numpy数组:
a = [['I05', 'U13', 4],
['I12', 'U13', 5],
['I22', 'U13', 3],
['I03', 'U15', 5],
['I14', 'U23', 5],
['I12', 'U23', 2],
['I15', 'U43', 5]]
这里我们有两个 U13 条目和三个 U23 条目。所以我需要保留这些数组并删除其余的。
删除后我想要这样的结果:
a = [['I05', 'U13', 4],
['I12', 'U13', 5],
['I22', 'U13', 3],
['I14', 'U23', 5],
['I12', 'U23', 2]]
如何有效地做到这一点?
数组已经在第二列('UXX'
值)上排序。
解决方案
此方法应实现所需的输出:
import numpy as np
from collections import Counter
a = np.array(a)
# count number of occurrences of each value in 2nd col
d = Counter(a[:,1])
# create index where counts > 1
index_keep = [i for i, j in enumerate(a[:,1]) if d[j] > 1]
>>> print(a[index_keep])
[['I05' 'U13' '4']
['I12' 'U13' '5']
['I22' 'U13' '3']
['I14' 'U23' '5']
['I12' 'U23' '2']]
推荐阅读
- c - 结构 2d 数组 segm 故障 C
- c# - 循环密码
- python-3.x - 试图调用一个类,但不断收到消息说“位置不接受任何参数
- html - 我的单选按钮一直显示为文本框?
- python - 通过直方图绘制数据
- qtwebengine - 来自子帧的 qt.webChannelTransport
- python - 从命名元组列表中写入 numpy.array()
- webpack - 您如何从 Spoonx 获取 aurelia-api 插件以使用当前不使用 coreBundles.aurelia 的 webpack 配置
- php - 使用 PHP 和正则表达式选择非分隔逗号
- amazon-web-services - Cloudfront CloudFormation