python - 如何删除阵列中的镜像对和对?
问题描述
我需要做的是删除阵列中的对和镜像对。我的意思是对于每对计数两次,我想删除对应的行,以及镜像对的行。
例子:
我有矩阵A
:
A=array([[ 0, 55],
[ 5, 25],
[ 5, 25],
[12, 62],
[27, 32],
[25, 73],
[55, 0],
[25, 5],
[62, 12],
[32, 27],
[99, 95]])
所以我想要获得的是以下 Matrix B
:
B = array([ [25, 73],
[99 ,95])
其中已被删除的对计数两次[5,25]
及其镜像对[25,5]
和[0,55]
及其镜像对,以及 for[12, 62]
和[27, 32]
。
解决方案
逻辑:
1.主要逻辑是特定索引如何同时满足have same pair
和两个条件have minor pair
。在这里,我们可以使用vectorize
属性Numpy
来检查条件和代码:
cond_i = (i == A) | (i[::-1] == A)
2.如果True
条件总和完全等于1
哪个均值不满足这两个条件,那么这将是我们的要求,对于此条件检查,请使用以下代码:
sum(list((cond_i[:,0] & cond_i[:,1])))
3.最后追加这个条件满足结果。
B.append((A[j]))
代码 :
from numpy import array
import numpy as np
A = array([[0, 55], [5, 25], [5, 25], [12, 62], [27, 32], [25, 73], [55, 0],
[25, 5], [62, 12], [32, 27], [99, 95]])
B = []
for j, i in enumerate(A):
if np.sum(np.all(i == A, axis=1) | np.all(i[::-1] == A, axis=1)) == 1:
B.append((A[j]))
print(np.array(B))
输出 :
[[25 73]
[99 95]]
推荐阅读
- firebase - 使用 get() 对 Firestore 安全规则缺少权限或权限不足
- java - ListView 最大高度
- swift - 什么是 EXC_BAD_ACCESS(代码=2,地址=0x16f39fff8)?
- kotlin - 我如何在 kotlin 中拆分字符串
- php - 在创建另一个数组后在 php 中使用 array_combine 时,数据被覆盖
- google-developer-tools - 每次打开开发人员工具时停止显示 Google 最新消息
- bash - 使用 shell 命令从网站上抓取/下载 mp3 文件
- java - 在 Java 中读取图形的邻接列表时,如何避免重复边?
- amazon-web-services - 如何遍历多个 AWS 账户?
- c# - 联系表格 ASP.NET C#