python - 如何找到两个 n*m 数组的相似列?
问题描述
array1 = [[1, 2, 3], [4, 5, 6], [2, 5, 8], [5, 6, 9] ]
array2 = [[1, 2, 3], [2, 5, 8]]
array2 在 array1 中的索引 0 和 2 处有一个类似的列,我希望索引作为输出,即 0 和 2
在python中不使用任何长for循环是否可以解决?
解决方案
您可以使用numpy
和使用all
,any
如下所示:
>>> import numpy as np
>>> array1 = np.array(array1)
>>> array2 = np.array(array2)
>>> res = (array1 == array2[:,None]).all(-1).any(0)
>>> res
array([ True, False, True, False])
>>> idx, = np.nonzero(res)
>>> idx
array([0, 2])
推荐阅读
- c - 指针和/或函数无法正常工作
- angular - 如何使用 ui-router 在 Angular cli 项目中设置guessjs?
- php - 使用在 windows 2000 中运行的 PHP 使用 mozilla 版本 10 生成带有新行的文本文件
- python-3.x - 将十进制数转换为 n 数
- sql - ORA-00920: 带有嵌入 select 语句的无效关系运算符
- c++ - 在 DirectShow 开始播放音频时单击噪音
- javascript - PHP用户端服务器端输入验证错误
- css - 选择除两个 id 之外的所有正文元素
- reactjs - 你如何使用 React-router-dom 在页面之间切换?
- sql - 按月、年和帐户对直到今天月份的所有月份的值求和,并在特定行不存在数据的情况下显示 0 的值