numpy.where
函數是三元表達式x if condition else y
的向量化版本。算法
例如:數組
咱們有一個條件和兩個數組。dom
import numpy as np xarr = np.array([1.1,1.2,1.3,1.4,1.5]) yarr = np.array([2.1,2.2,2.3,2.4,2.5]) cond = np.array([True,False,True,True,False]) # 當cond元素爲真時,取xarr中的元素,不然取yarr中的元素 result = np.where(cond,xarr,yarr) print(result)
結果以下:函數
numpy.where的第二個和第三個參數並不須要是數組,也能夠是標量。性能
假設你有一個隨機生成的矩陣數據,而且想把全部大於0.5都替換成1,小於0.5都替換成爲0,使用np.where很容易實現。code
arr = np.random.rand(4,4) print(arr) result1 = np.where(arr > 0.5, 1, 0) print(result1)
輸出以下:orm
圖中列出了所有的基本數組統計方法:blog
mean、sum等函數能夠接受一個可選參數axis,這個參數能夠用於計算給定軸向上的統計值,造成一個降低一維度的數組。排序
像cumsum、cumprod並不會聚合,但會產生一箇中間結果。數據分析
布爾值會被強制爲1(TRUE)和0(FALSE)。所以sum一般能夠用於計算布爾值數組的TRUE的個數。
arr_sum = np.random.randn(100) print("大於0.5的值有{0}個".format((arr_sum > 0.5).sum()))
結果以下:
對於布爾值數組,有兩個經常使用方法any
和all
。
any
檢查數組中是否至少有一個True,而all
檢查是否每一個值都爲True。
NumPy數組可使用sort
方法按位置排序。
NumPy 提供了多種排序的方法。 這些排序函數實現不一樣的排序算法,每一個排序算法的特徵在於執行速度,最壞狀況性能,所需的工做空間和算法的穩定性。 下表顯示了三種排序算法的比較。
NumPy經常使用的一個方法是:np.unique
。
該方法返回的是數組中惟一值排序後造成的數組。
np.in1d
能夠檢查一個數組中的值是否存在於另一個數組中,並返回一個布爾值數組。
names = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe']) # 返回惟一值排序後的結果 print(np.unique(names)) values = np.array([6, 0, 0, 3, 2, 5, 6]) # 檢查一個數組是否存在於另一個數組中。 print(np.in1d(values, [2, 3, 6]))
結果以下: