微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

比较两个数组并打印出python中的行索引

如何解决比较两个数组并打印出python中的行索引

我有两个数组 A 和 B

merge

我想将 A[:,2:4] 的几个元素与 B[:,2:4] 的几个元素进行比较,并打印出它们相等或近似的行? 这是我仅针对 A[:,3]

方法
A = np.array([[9,10,11,12.0],[13 14 15 16.3]])
B = np.array([[1,2,3,4],[5,6,7,8],[9,12],[13,14,15,16],[17,18,19,20]])

如何同时使用 A[:,2]A[:,3]

非常感谢

解决方法

我认为您正在寻找这样的东西:

import numpy as np

indexes_to_compare = range(2,4)
A = np.array([[9,10,11,12],[13,14,15,16.3]])
B = np.array([[1,2,3,4],[5,6,7,8],[9,16],[17,18,19,20]])

for a in A:
    print(np.where(np.all(np.isclose(B[:,indexes_to_compare],a[indexes_to_compare],atol=0.5),axis=1))[0])

您将 BA 的每一行进行比较,只考虑几个索引。

因此你:

  • 使用 B 检查 A 是否接近一行 np.isclose(_)(在选定的索引中)
  • 仅保留所有选定索引接近的行,使用 np.all(_,axis=1)
  • 使用 np.where 获取此类行的索引

如果你想确保每个周期只输出一行B,只需使用np.where(_)[0][0]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。