python - 通过python在列表中查找不同的对
问题描述
我有一个列表,我想在列表中找到不同的对。我实现了一个函数-> different()
import numpy as np
def different(array):
res = []
for (x1, y1), (x2, y2) in array:
if (x1, y1) != (x2, y2):
res.append([(x1, y1), (x2, y2)])
return res
a = np.array([[[1, 2], [3, 4]],
[[1, 2], [1, 2]],
[[7, 9], [6, 3]],
[[3, 3], [3, 3]]])
out = different(a) # get [[(1, 2), (3, 4)],
# [(7, 9), (6, 3)]]
还有其他更好的方法吗?我想改进我的功能不同。列表大小可能大于 100,000。
解决方案
做到这一点的 numpy 方法是
import numpy as np
a = np.array([[[1, 2], [3, 4]],
[[1, 2], [1, 2]],
[[7, 9], [6, 3]],
[[3, 3], [3, 3]]])
b = np.logical_or(a[:,0,0] != a[:,1,0], a[:,0,1] != a[:,1,1])
print(a[b])
推荐阅读
- c++ - C++ 类返回自身
- javascript - React 组件分解策略
- javascript - 将所选项目添加到 ng-select 并预先输入多个
- batch-file - 批量、复制和重命名所有子目录中的最新文件
- java - 无法反序列化对象。无法将 java.util.Date 类型的值转换为字符串
- c# - 从 C# 桌面应用程序发送电子邮件时指定图像的相对路径
- r - 找到离给定位置最近的纬度
- java - 有没有办法在 IntelliJ IDEA 中使用 jlink 来创建自定义模块化运行时映像?
- io - 在 Common Lisp 中类比 Python is_pressed?
- python - 组合三个具有不同列号的 Pandas 数据透视表