所以我有兩個數組,它們具有相同的維度但長度不同。比較兩個不同大小的數組 - 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
只會有一場比賽嗎?你想要所有的比賽,還是隻是第一場比賽? –