【问题标题】:Python: Compare three numpy arrays with different sizePython:比较三个不同大小的numpy数组
【发布时间】:2022-01-11 21:20:32
【问题描述】:

我有 3 个不同的数组(我们称它们为 arrya、arryb 和 arryc)。 arrya 和 arryb 大小相同,arryc 要小很多。

我正在尝试做的是在 arrya 或 arryb(不包括)与 arryc 中获得第一个巧合。例如:

arrya = [100,25,56,78,90,52,13]
arryb = [93,42,52,25,10,11,24]
arryc = [52,13,24,100]

在这种情况下,我需要第一个重合是在索引 4 中的 arrayc 和索引 0 中的 arrya 之间的结果。

我尝试过使用循环,但具有不同的大小,我收到错误“索引 4 超出轴 0 的范围,大小为 4”。我也试过了

【问题讨论】:

  • Python 是0-index。所以100 在索引3arryc...
  • 这些是列表,而不是数组。在您的描述中保持一致。并显示代码。
  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: python arrays numpy


【解决方案1】:

一种方法是使用交叉点。交集显示了两个数组之间共有的值。 Numpy 有一个 intersect1d 函数,可用于列表或 numpy 数组。 https://numpy.org/doc/stable/reference/generated/numpy.intersect1d.html

import numpy as np

arrya = [100,25,56,78,90,52,13]
arryb = [93,42,52,25,10,11,24]
arryc = [52,13,24,100]

# An intersection returns values that are common between the two arrays
# return_indices arg is new in version 1.15.0
common_vals, ida, idc = np.intersect1d(arrya, arryc, return_indices=True)

print(f'These are common values between A and C {common_vals}')

print(f'These are indices in A {ida}')

print(f'These are indices in C {idc}')

然后您可以从这些数组中检查它们是否为空并使用找到的第一个实例。

if len(ida) > 0:
    print(f'First coincidental index found between arrayA and arrayC, is arrayA index {ida[0]}')

【讨论】:

  • 非常感谢,看来这是合适的解决方案。
  • 很高兴为您提供帮助。如果这对您有用,请选择我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-24
  • 1970-01-01
  • 2020-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多