NumPy陣列的高階操作(二)

2021-10-12 00:22:11 字數 4472 閱讀 3139

@r星校長

2關:比較、掩碼和布林邏輯

比較

在許多情況下,資料集可能不完整或因無效資料的存在而受到汙染。我們要基於某些準則來抽取、修改、計數或對乙個陣列中的值進行其他操作時,就需要掩碼了。接下來將學習如何用布林掩碼來檢視和運算元組中的值。

和算術運算子一樣,比較運算子在numpy中也是通過通用函式來實現的。比較運算子和其對應的通用函式如下:

比較運算子

通用函式

==np.equal

!=np.not_equal

<np.less

<=np.less_equal

>np.greater

>=np.greater_equal

這些比較運算子通用函式可以用於任意形狀、大小的陣列。示例如下:

data=np.array([(

'alice',4

,40),

('bob',11

,85.5),

('cathy',7

,68.0),

('doug',9

,60)]

,dtype=[(

"name"

,"s10"),

("age"

,"int"),

("score"

,"float")]

)#構造結構化陣列

print

(data[

"age"

]<10)

'''輸出:array([ true, false, true, true])

'''print

(data[

"score"

]>60)

'''輸出:array([false, true, true, false])

'''print

(data[

"score"

]>=60)

'''輸出:array([false, true, true, true])

'''print

(data[

"score"

]<=60)

'''輸出:array([ true, false, false, true])

'''print

(data[

"age"]!=

9)'''輸出:array([ true, true, true, false])

'''print

((data[

"age"]/

2)==(np.sqrt(data[

"age"])

))'''輸出:array([ true, false, false, false])

'''

布林陣列作掩碼一種更加強大的模式是使用布林陣列作為掩碼,通過該掩碼選擇資料的子資料集,實現一些操作:

data=np.array([(

'alice',4

,40),

('bob',11

,85.5),

('cathy',7

,68.0),

('doug',9

,60)]

,dtype=[(

"name"

,"s10"),

("age"

,"int"),

("score"

,"float")]

)print

(data)

'''輸出:[(b'alice', 4, 40. )

(b'bob', 11, 85.5)

(b'cathy', 7, 68. )

(b'doug', 9, 60. )]

'''print

(data[

"score"

]>60)

#使用比較運算得的乙個布林陣列

'''輸出:[false true true false]

'''print

(data[data[

"score"

]>60]

)#進行簡單的索引,即掩碼操作將值為true的選出

'''輸出:[(b'bob', 11, 85.5) (b'cathy', 7, 68. )]

'''

布林邏輯結合python的逐位邏輯運算子一起使用。邏輯運算子對應numpy中的通用函式如下表:

邏輯運算子

通用函式

&np.bitwise_and

np.bitwise_or

^np.bitwise_xor

~np.bitwise_not

print

(np.count_nonzero(data[

"age"

]<10)

)#統計陣列中true的個數

'''輸出:3

'''#還可以用np.sum(),輸出結果和count_nonzero一樣,sum()的好處是可以沿著行或列進行求和

print

(np.

sum(data[

"age"

]<10)

)print

(np.

any(data[

"score"

]<60)

)#是否有不及格的

'''輸出:true

'''print

(np.

all(data[

"age"

]>10)

)#是否都大於10歲

'''輸出:false

'''print

(data[data[

"age"

]>10]

)#列印年齡大於10的資訊

'''輸出:array([(b'bob', 11, 85.5)],

dtype=[('name', 's10'), ('age', '

程式設計要求在右側編輯器begin-end處補充**,根據輸入的資料篩選出大於num的值。

測試說明

平台會對你編寫的**進行測試,對比你輸出的數值與實際正確的數值,只有所有資料全部計算正確才能進入下一關。

測試輸入:

[[3

,15,9

,11,7

],[2

,0,8

,19,16

],[6

,6,16

,9,5

],[7

,5,2

,6,13

]]10

預期輸出:

[

1511

1916

1613

]

開始你的任務吧,祝你成功!

NumPy陣列的高階操作(五)

r星校長 第5關 線性代數 numpy的線性代數 線性代數 如矩陣乘法 矩陣分解 行列式以及其他方陣數學等 是任何陣列庫的重要組成部分,一般我們使用 對兩個二維陣列相乘得到的是乙個元素級的積,而不是乙個矩陣點積。因此numpy提供了線性代數函式庫linalg,該庫包含了線性代數所需的所有功能。常用的...

05 numpy陣列高階操作

import numpy as np x np.array 1 2 3 y np.array 4,5,6 b np.broadcast x,y 對y廣播x 1.print b.index print b.next 迴圈到下乙個 1,4 print b.next 迴圈到下乙個 1,5 print b....

numpy 陣列操作

在給定的區間 start,stop 內返回均勻間隔的值 語法 numpy.arange start,stop,step,dtype none 引數 返回 示例 np.arange 5 array 0,1,2,3,4 np.arange 1,5 array 1,2,3,4 np.arange 1,5,...