numpy排序與集合運算用法示例

2022-09-29 16:36:10 字數 4461 閱讀 7703

這裡有numpy陣列的相關介紹

排序numpy與python列表內建的方法類似,也可通過sort方法進行排序。

用法如下:

in [1]: import numpy as np

in [2]: x = np.random.randn(9)

in [3]: x

out[3]:

array([-0.4041504 , -0.42198556, 0.92807217, -2.66程式設計客棧609196, 1.50915897,

0.38080873, 1.05325796, -1.16488798, 0.04062064])

in [4]: x.sort()

in [5]: x

out[5]:

array([-2.66609196, -1.16488798, -0.42198556, -0.4041504 , 0.04062064,

0.38080873, 0.92807217, 1.05325796, 1.50915897])

可以發現上述的sort方法是直接對x進行了排序而並沒有建立乙個副本。

但是np.sort()這個頂級的方法,會返回乙個副本:

in [6]: x = np.random.randn(6)

in [7]: x

out[7]:

array([ 0.14240205, 0.48903869, 0.22528632, 1.31659382, 0.00352338,

0.95574862])

in [8]: np.sort(x)

out[8]:

array([ 0.00352338, 0.14240205, 0.22528632, 0.48903869, 0.95574862,

1.31659382])

in [9]: x

out[9]:

array([ 0.14240205, 0.48903869, 0.22528632, 1.31659382, 0.00352338,

0.95574862])

傳入軸編號,可以實現在某乙個軸向上進行排序。

in [34]: x = np.random.randn(5,4)

in [35]: x

out[35]:

array([[-0.26646799, -0.40714749, -0.76788268, -0.25340467],

[ 0.70099086, -0.88716684, 0.13461279, 2.14412835],

[ 0.39718924, -0.14671297, -0.67821163, 1.85798273],

[-0.29389289, 0.0346094 , 0.25213133, 0.87105479],

[-0.10797243, 1.60188878, 0.67829493, 0.43291808]])

in [36]: s = x

in [37]: s.sort(0)#按列進行排序

in [38]: s

out[38]:

array([[-0.29389289, -0.88716684, -0.76788268, -0.25340467],

[-0.26646799, -0.40714749, -0.67821163, 0.43291808],

[-0.10797243, -0.14671297, 0.13461279, 0.87105479],

[ 0.39718924, 0.0346094 , 0.25213133, 1.85798273],

[ 0.70099086, 1.60188878, 0.67829493, 2.14412835]])

in [39]: x

out[39]:

array([[-0.29389289, -0.88716684, -0.76788268, -0.25340467],

[-0.26646799, -0.40714749, -0.67821163, 0.43291808],

[-0.10797243, -0.14671297, 0.13461279, 0.87105479],

[ 0.39718924, 0.0346094 , 0.25213133, 1.85798273],

[ 0.70099086, 1.60188878, 0.67829493, 2.14412835]])

in [40]: x = np.random.randn(5,4)

in [41]: x

out[41]:

array([[ 0.82309157, -0.56413805, -0.1766557 , -0.31924962],

[-1.25606694, 2.63622922, 2.47481377, 0.27840961],

[ 0.63659583, 1.52779004, -0.90582752, 0.82325241],

[-1.52664294, -0.5285837 , -1.96380368, -0.44323125],

[ 1.94859294, 2.55676806, 1.53614848, -0.43366557]])

in [42]: x.sort(1)#按行進行排序

in [43]: x

out[43]:

array([[-0.56413805, -0.31924962, -0.1766557 , 0.82309157],

[-1.25606694, 0.27840961, 2.47481377, 2.63622922],

[-0.90582752, 0.63659583, 0.82325241, 1.52779004],

[-1.96380368, -1.52664294, -0.5285837 , -0.44323125],

[-0.43366557, 1.53614848, 1.94859294, 2.55676806]])

在這兒,我試圖將x賦值給s,結果發現對s排序後,x也變了,這說明,在記憶體中,實際上,s,x是指向同一組值得。

我也曾試圖輸入s.sort(2),結果出現了valueerror:axis(=2)outofbounds,這也就和前面的統計函式的axis引數是一致的。

那麼也就是說,他的用法和axis一致。

利用排序,我們還能得到分位數(

分位數(英語:quant亦稱分位點,是指將乙個隨機變數的概率分布範圍分為幾個等份的數值點,常用的有中位數(即二分位數)、四分位數、百分位數等。具體可自行搜尋),從而www.cppcns.com得到特定位置的值。

in [44]: x = np.random.randn(500)

in [45]: x.sort()

in [46]: x[int(0.05 * len(x))] #5%分位數

out[46]: -1.7657191623368329

還有很多沒有深入了解,比如怎麼降序排列,待續。

集合運算

unique(x)返回集合中的唯一值,並排序,其實也就是去除重複值。

in [1]: import numpy as np

in [2]: str =程式設計客棧 np.array(['s','f','r','s','d','f','w','r'])

in [3]: np.unique(str)

out[3]:

array(['d', 'f', 'r',www.cppcns.com 's', 'w'],

dtype='

intersect1d(x,y)返回集合a和b的交集,並排序

in [6]: k = np.arange(8)

in [7]: np.intersect1d(i, k)

out[7]: array([1, 2, 3, 4, 5])

union1d(x,y)返回集合a和b的並集,並排序

in [8]: np.union1d(i,k)

out[8]: array([0, 1, 2, 3, 4, 5, 6, 7])

in1d(x,y)返回乙個a包含於b的布林型陣列

in [10]: np.in1d(k,i)

out[10]: array([false, true, true, true, true, true, false, false], dtype=bool)

setdiff1d(x,y)集合的差,包含於a但不包含於b,相當於a-(a∩b)

in [12]: np.setdiff1d(k,i)

out[12]: array([0, 6, 7])

setxor1d(x,y)存在於a中但不同時存在於b中,也就是對稱差,說白了就是a和b交集之外的部分。

就是紅色的部分。

in [13]: s = np.arange(4,12)

in [14]: s

out[14]: array([ 4, 5, 6, 7, 8, 9, 10, 11])

in [15]: np.setxor1d(s,k)

out[15]: array([ 0, 1, 2, 3, 8, 9, 10, 11])

總結

06 numpy 布林型索引 集合運算 排序

目錄 一 布林型別索引 二 集合運算 三 排序 import numpy as np 建立arr arr np.array 1,2,3 5,2,8 1,2,3 print arr n n format arr 獲取arr 中元素大於3的元素 a arr arr 3 print a n format ...

老衛帶你學 numpy集合運算

集合運算 2018 11 11 1.np.unique 唯一值 它用幹找出陣列中的唯一值並返回已排序的結果 names np.array bob joe will bob np.unique names array bob will bob joe dtype sorted set names 等價...

PHP abstract 抽象類定義與用法示例

php抽象類應用要點 1.定義一些方法,子類必須完全實現這個抽象中所有的方法 2.不能從抽象類建立物件,它的意義在於被擴充套件 3.抽象類通常具有抽象方法,方法中沒有大括號 php抽象類應用重點 1.抽象方法不必實現具體的功能,由子類來完成 2.在子類實現抽象類的方法時,其子類的可見性必須大於或等於...