所以我有两个数组,它们具有相同的维度但长度不同。比较两个不同大小的数组 - python numpy
ARR1 = np.array([[IND1],[IND2],[IND3]])
ARR2 = np.array([[IND7],[IND3],[IND3],[IND4] ])
我需要获取具有相同位置的元素的位置和值,并且在两个数组中都相等。
在该示例情况下,预期的答案将是:
位置= 2
值= IND3
我使用蟒与numpy的模块。
所以我有两个数组,它们具有相同的维度但长度不同。比较两个不同大小的数组 - python numpy
ARR1 = np.array([[IND1],[IND2],[IND3]])
ARR2 = np.array([[IND7],[IND3],[IND3],[IND4] ])
我需要获取具有相同位置的元素的位置和值,并且在两个数组中都相等。
在该示例情况下,预期的答案将是:
位置= 2
值= IND3
我使用蟒与numpy的模块。
对于NumPy数组,您可能希望以矢量化方式工作以获得性能,并且还可以使用数组切片。考虑到这一点,下面是输入数组a
一种方法和b
-
n = min(len(a), len(b))
out_idx = np.flatnonzero(a[:n] == b[:n])
out_val = a[out_idx] # or b[out_idx] both work
这需要多个匹配的照顾。
采样运行 -
In [224]: a = np.array([3, 8, 9, 2, 1, 7])
In [225]: b = np.array([1, 2, 9, 7, 5, 7, 0, 4])
In [226]: n = min(len(a), len(b))
...: out_idx = np.flatnonzero(a[:n] == b[:n])
...: out_val = a[out_idx]
...:
In [227]: out_idx
Out[227]: array([2, 5])
In [228]: out_val
Out[228]: array([9, 7])
元组作为输出指数及其值的列表 -
In [229]: zip(out_idx, out_val)
Out[229]: [(2, 9), (5, 7)]
对于指数和相应的值相当字典输出 -
In [230]: {i:j for i,j in zip(out_idx, out_val)}
Out[230]: {2: 9, 5: 7}
谢谢你完美的作品:) – CardCaptor
假设列表被称为lst_1
和lst_2
,你可以不喜欢
for i in range(min(len(lst_1), len(lst_2)):
if lst_1[i] == lst_2[i]:
return lst_1[i], i
这将返回包含常见的元素,其索引的元组。请注意,如果有多个匹配项,则会返回第一个匹配项;如果不存在匹配,则返回None
。
我会修改这个返回元素和位置的列表 – CardCaptor
将较小的数组填充为与较长的数组一样长,然后减去另一个数组,然后用np.where((Arr1-Arr 2)== 0)。 – anki
只会有一场比赛吗?你想要所有的比赛,还是只是第一场比赛? –