另一個陣列我有兩個陣列檢查如果數組的元素存在於在python
a = array([1,2,3])
b = array([2,7])
現在我想檢查的元件是在B 和返回的答案應該是(假,真假)。有沒有一些簡單的方法來做到這一點,而不使用函數?
另一個陣列我有兩個陣列檢查如果數組的元素存在於在python
a = array([1,2,3])
b = array([2,7])
現在我想檢查的元件是在B 和返回的答案應該是(假,真假)。有沒有一些簡單的方法來做到這一點,而不使用函數?
使用標準的Python列表:
>>> a = [1, 2, 3]
>>> b = [2, 7]
>>> tuple(x in b for x in a)
(False, True, False)
假設你array
函數返回還支持迭代和in
操作的對象,它應該工作一樣。
好了,這是我如何與清單做:
>>> a = [1, 2, 3]
>>> b = [2, 7]
>>> result = []
>>>
>>> for x in a:
... result.append(x in b)
...
>>> print result
[False, True, False]
正如其他答案顯示,這可以被壓縮到一個列表或發電機的理解 –
我開始之前有任何其他人輸入我的答案。這個答案可能是不必要的冗長,但它仍然有效,可以幫助那些還沒有完全理解列表解析的人。 – Hubro
只使用numpy的:從(N,)
>>> (a[:,None] == b).any(axis=-1)
(因此,我們把a
到(N,1)
數組,然後使用numpy的廣播測試是否相等,最後得到一個(N, M)
數組(假設b
的形狀爲(M,)
...),然後我們檢查每行上是否有True
any(axis=-1)
。
如何:
>>> numpy.setmember1d(a, b)
array([False, True, False], dtype=bool)
更新,謝謝seberg。隨着numpy的較新的verions是這樣的:
>>> numpy.in1d(a, b)
array([False, True, False], dtype=bool)
在較新的numpy版本中,該函數被稱爲'np.in1d'(或'np.lib.arraysetops.in1d',但是最好的解決方案是使用數組,至少如果'b'不是很小。 – seberg
這是超快的。您。 – user996018
這氣味像功課,[?你嘗試過什麼(http://mattgemmell.com/2008/12/08/what-have-you-tried/) –
那裏的數組函數從哪裏來? numpy的? – l4mpi
是的陣列功能是從numpy – user996018