@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,...