python - 行满足涉及元素匹配的 3 个条件的 Numpy 数组
问题描述
这个问题有三个相关的部分。考虑具有 4 列的 numpy 数组样本 P。
import numpy as np
P = np.array([-4, 5, 2, -3],
[-5, 6, 0, -5],
[-6, 5, -2, 5],
[1, -2, 1, -2],
[2, -4, -6, 8],
[-4, 9, -4, 2],
[0, -8, -8, 1]])
我希望学习如何构建三个新数组:
a) P1:这是 P,其中行的第一个元素在最后 3 个元素中匹配。
b) P2:这是 P,其中一行的前 2 个元素在后 2 个元素中匹配。
c) P3:这是 P,其中一行的前 3 个元素与最后一个元素匹配。
对于小样本数组,结果将是:
P1 = [[-5, 6, 0, -5],
[1, -2, 1, -2],
[-4, 9, -4, 2]]
P2 = [[-5, 6, 0, -5],
[-6, 5, -2, 5],
[1, -2, 1, -2],
[-4, 9, -4, 2],
[0, -8, -8, 1]]
P3 = [-5, 6, 0, -5],
[-6, 5, -2, 5],
[1, -2, 1, -2]]
解决方案
您想要选择满足给定条件的所有行,因此您需要遍历 的行P
,构建 aboolean array
并将其应用于 的行P
。在您的情况下,我能想到的检查是否存在共享元素的最简单方法是创建两个set
s 并检查它们的交集是否为空。这可以通过set.isdisjoint
.
最终代码:
P1 = P[[not set(row[:1]).isdisjoint(row[1:]) for row in P], :]
P2 和 P3 类似。
推荐阅读
- unix - 在 ksh 中打印纳秒
- python - 有人可以向我解释一下吗?
- django - 在 Django REST Framework 中,为什么序列化程序可以正确处理模型中的字段级验证异常而不是对象级验证?
- forms - 如何在编辑模式下获取选定的选项值(codeigniter)
- java - 如何使用二值图像处理绘制 GUI?
- python - 在复杂的 json 对象中查找 dict 键的值
- javascript - 如何在茉莉花中测试完成的ajax部分
- webpack - 每当应用程序以开发模式(electron-webpack)重新启动时,存储数据(localstroage,IndexedDb)就会被删除
- scala - 您如何在 Scala 中从 AWS API Gateway 调用 AWS Lamda?
- tensorflow - 如何在 Keras 中使用 tensorflow 函数 recompute_grad