ウェッジ
私たちは、オブジェクトが交差点、労働組合、違い、対称差を取ることができますのpythonの集合であることを知っているが、numpyのためにこれを行う方法はありませんか?時々 、私たちはでパンダを使用して(底层基于numpy)
データを処理する時、私たちはコレクションに分離し、その後に処理するだけでなく、そうするために私たちのnumpyのをサポートする必要はありません、以下を見てください。
Set操作
セット操作で設定
集合演算のセットは、比較的単純である、我々は単にそれを見て
set1 = {1, 2, 3}
set2 = {2, 3, 4}
"""
&: 交集
|: 并集
-: 差集
^: 对称差集
"""
# 以下几种方式是等价的,但是一般我们都会使用操作符来进行处理,因为比较方便
print(set1 & set2) # {2, 3}
print(set1.intersection(set2)) # {2, 3}
print(set.intersection(set1, set2)) # {2, 3}
print(set1 | set2) # {1, 2, 3, 4}
print(set1.union(set2)) # {1, 2, 3, 4}
print(set.union(set1, set2)) # {1, 2, 3, 4}
print(set1 - set2, set2 - set1) # {1} {4}
print(set1.difference(set2), set2.difference(set1)) # {1} {4}
print(set.difference(set1, set2), set.difference(set2, set1)) # {1} {4}
print(set1 ^ set2) # {1, 4}
print(set1.symmetric_difference(set2)) # {1, 4}
print(set.symmetric_difference(set1, set2)) # {1, 4}
"""
另外,以上所有的操作都支持多个集合,不仅仅只是两个
"""
print({1, 2, 3} & {2, 3, 4} & {3, 4, 5}) # {3}
設定された動作numpyの
numpyの配列はまた、など&演算子はサポートされているが、彼らは意味しないとは何の関係ものコレクションを表しますが。
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([2, 3, 4])
# 两个数组进行&,表示将数组里面对应元素分别进行"按位与"操作
print(arr1 & arr2) # [0 2 0]
だから、私たちは、事業が提供するAPIのnumpyのを使用する必要があります
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([2, 3, 4])
# 取交集
print(
np.intersect1d(arr1, arr2)
) # [2 3]
# 取并集
print(
np.union1d(arr1, arr2)
) # [1 2 3 4]
# 取差集
print(
np.setdiff1d(arr1, arr2),
np.setdiff1d(arr2, arr1)
) # [1] [4]
# 取对称差集
print(
np.setxor1d(arr1, arr2)
) # [1 4]
二つの受信アレイ、戻り配列。しかし、我々はそれを見ると、違いのコレクション要素が繰り返されていない要件のセットですが、配列は、この要件を持っていませんでした。
import numpy as np
arr1 = np.array([1, 2, 2, 2, 3])
arr2 = np.array([2, 3, 4])
print(np.intersect1d(arr1, arr2)) # [2 3]
print(np.union1d(arr1, arr2)) # [1 2 3 4]
それの複数のアレイがある場合、しかし、我々は唯一の2つのアレイ上を通過することができますか?
from functools import reduce
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([2, 3, 4])
arr3 = np.array([3, 4, 5])
print(reduce(np.intersect1d, [arr1, arr2, arr3])) # [3]
全体的には非常に簡単です |