[python3 Numpy 填坑之旅]使用Numpy廣播機制實現陣列與數字比較大小的問題
阿新 • • 發佈:2018-11-26
在使用Numpy開發的時候,遇到一個問題,需要Numpy陣列的每一個元素都與一個數進行比較,返回邏輯陣列。
我們在使用Numpy計算是可以直接使用陣列與數字運算,十分方便。當我嘗試使用廣播機制來處理陣列與數字比較大小問題的時候發現廣播機制同樣適用,以下是測試程式碼:
- 示例一,二維陣列與數字大小比較:
import numpy as np
a = np.linspace(1,12,12).reshape(3,-1)
print("a is /n", a)
b = 3
c = a > b
print("c is /n", c)
結果:由此可以看出c被廣播成了一個3x4,各元素值都為3的二維陣列
a is
[[ 1. 2. 3. 4.]
[ 5. 6. 7. 8.]
[ 9. 10. 11. 12.]]
c is
[[False False False True]
[ True True True True]
[ True True True True]]
- 例項二,二維陣列與一維陣列大小比較:
import numpy as np a = np.linspace(1,12,12).reshape(4,-1) d = np.linspace(2,4,3) print("a is \n", a) print("d is \n", d) e = a > d print("e is \n",e )
結果:表明d被廣播成了3x4的二維陣列,列向量分別為[2. 3. 4.]
a is
[[ 1. 2. 3.]
[ 4. 5. 6.]
[ 7. 8. 9.]
[10. 11. 12.]]
d is
[2. 3. 4.]
e is
[[False False False]
[ True True True]
[ True True True]
[ True True True]]
其他的廣播內容可以參考這個部落格:
https://blog.csdn.net/qq_15807167/article/details/70197575