【发布时间】:2021-02-28 10:58:09
【问题描述】:
我有以下 2 个数组:
arr = np.array([[1, 2, 3, 4],
[5, 6, 7, 8],
[7, 5, 6, 3],
[2, 4, 8, 9]]
ids = np.array([6, 5])
数组arr 中的每一行都描述了一个 4 位 id,没有多余的 id - 无论是在它们的值中还是在它们的组合中。因此,如果[1, 2, 3, 4] 存在,则这4 位数字的其他组合将不存在。稍后会很重要。
数组ids 包含一个 2 位 id,但是顺序是随机的。现在我需要遍历arr 的每一行,并查看这个 2 位部分 id 是否是任何 4 位 id 的一部分。在此示例中,ids 适合从 arr 顶部算起的第 2 行和第 3 行。
我当前使用 np.isin 的解决方案仅在数组 ids 也有 4 位行时才有效。
arr[np.isin(arr, ids).all(1)]
将all(1) 更改为any(1) 也不能解决问题,因为这样一来,如果ids 的一个数字在arr 的一行中就足够了,但是我需要这两个值。
有人有紧凑的解决方案吗?
【问题讨论】:
标签: arrays python-3.x numpy filter