Python Numpy中數(shù)組的集合操作詳解
我們知道兩個(gè) set 對(duì)象之間,可以取交集、并集、差集、對(duì)稱差集,舉個(gè)例子:
s1?=?{1,?2,?3}
s2?=?{2,?3,?4}
"""
&:?交集
|:?并集?
-:?差集
^:?對(duì)稱差集
"""
#?以下幾種方式是等價(jià)的
#?但是一般我們都會(huì)使用操作符來進(jìn)行處理,因?yàn)楸容^方便
print(s1?&?s1)
print(s1.intersection(s2))
print(set.intersection(s1,?s2))
"""
{2,?3}
{2,?3}
{2,?3}
"""
print(s1?|?s2)
print(s1.union(s2))
print(set.union(s1,?s1))
"""
{1,?2,?3,?4}
{1,?2,?3,?4}
{1,?2,?3,?4}
"""
print(s1?-?s2,?s2?-?s1)
print(s1.difference(s2),
??????s2.difference(s1))
print(set.difference(s1,?s2),
??????set.difference(s2,?s1))
"""
{1}?{4}
{1}?{4}
{1}?{4}
"""
print(s1?^?s2)
print(s1.symmetric_difference(s2))
print(set.symmetric_difference(s1,?s2))
"""
{1,?4}
{1,?4}
{1,?4}
"""
#?另外,我們還可以同時(shí)對(duì)多個(gè)集合操作,不僅僅是兩個(gè)
print({1,?2,?3}?&?{2,?3,?4}?&?{3,?4,?5})??#?{3}那么 Numpy 的數(shù)組之間,可不可以執(zhí)行這些操作呢?答案是可以的,Numpy 提供了一些 API,用于數(shù)組之間的集合運(yùn)算。
但需要注意,數(shù)組雖然也支持 & 等操作符,但是它們代表的意義和集合無關(guān)。
import?numpy?as?np arr1?=?np.array([1,?2,?3]) arr2?=?np.array([2,?3,?4]) #?兩個(gè)數(shù)組?& #?表示將數(shù)組里面對(duì)應(yīng)的元素分別進(jìn)行"按位與"操作 print(arr1?&?arr2)??#?[0?2?0]
所以我們需要使用 Numpy 提供的 API 進(jìn)行運(yùn)算。
import?numpy?as?np arr1?=?np.array([1,?2,?2, 3]) arr2?=?np.array([2,?3,?4,?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] #?取對(duì)稱差集 print( ????np.setxor1d(arr1,?arr2) )??#?[1?4]
接收兩個(gè)數(shù)組,返回一個(gè)數(shù)組。并且原始數(shù)組中的元素允許重復(fù),對(duì)結(jié)果沒有影響。
另外,上面的函數(shù)都只能接收兩個(gè)數(shù)組,如果我們想同時(shí)對(duì)任意多個(gè)數(shù)組操作呢?很簡(jiǎn)單,使用 reduce 即可。
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]
總的來說還是比較簡(jiǎn)單的。
到此這篇關(guān)于Python Numpy中數(shù)組的集合操作詳解的文章就介紹到這了,更多相關(guān)Numpy數(shù)組集合操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python使用matplotlib.pyplot?as?plt繪圖圖層優(yōu)先級(jí)問題
這篇文章主要介紹了Python使用matplotlib.pyplot?as?plt繪圖圖層優(yōu)先級(jí)問題.文章圍繞主題展開詳細(xì)內(nèi)容需要的小伙伴可以參考一下2022-04-04
Python中的Joblib庫(kù)使用學(xué)習(xí)總結(jié)
這篇文章主要介紹了Python中的Joblib庫(kù)使用學(xué)習(xí)總結(jié),Joblib是一組在Python中提供輕量級(jí)流水線的工具,Joblib已被優(yōu)化得很快速,很健壯了,特別是在大數(shù)據(jù)上,并對(duì)numpy數(shù)組進(jìn)行了特定的優(yōu)化,需要的朋友可以參考下2023-08-08
Django 對(duì)象關(guān)系映射(ORM)源碼詳解
這篇文章主要介紹了Django 對(duì)象關(guān)系映射(ORM)源碼詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
python pandas中對(duì)Series數(shù)據(jù)進(jìn)行軸向連接的實(shí)例
今天小編就為大家分享一篇python pandas中對(duì)Series數(shù)據(jù)進(jìn)行軸向連接的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-06-06
Python抓取數(shù)據(jù)到可視化全流程的實(shí)現(xiàn)過程
這篇文章主要介紹了Python抓取數(shù)據(jù)到可視化全流程的實(shí)現(xiàn)過程,2022-01-01
python開發(fā)之a(chǎn)naconda以及win7下安裝gensim的方法
這篇文章主要介紹了python開發(fā)之a(chǎn)naconda以及win7下安裝gensim的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
Python實(shí)現(xiàn)刪除windows下的長(zhǎng)路徑文件
這篇文章主要為大家詳細(xì)介紹一下如何利用Python語(yǔ)言實(shí)現(xiàn)刪除windows下的長(zhǎng)路徑文件功能,文中的示例代碼講解詳細(xì),具有一定參考借鑒價(jià)值,感興趣的可以了解一下2022-07-07
Pandas中字符串和時(shí)間轉(zhuǎn)換與格式化的實(shí)現(xiàn)
本文主要介紹了Pandas中字符串和時(shí)間轉(zhuǎn)換與格式化的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01

