NumPy入門05---使用數組進行面向數組編程

01 將條件邏輯做爲數組操做

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的第二個和第三個參數並不須要是數組,也能夠是標量。性能

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

02 數學和統計方法

圖中列出了所有的基本數組統計方法:blog

mean、sum等函數能夠接受一個可選參數axis,這個參數能夠用於計算給定軸向上的統計值,造成一個降低一維度的數組。排序

像cumsum、cumprod並不會聚合,但會產生一箇中間結果。數據分析

03 布爾值數組的方法

布爾值會被強制爲1(TRUE)和0(FALSE)。所以sum一般能夠用於計算布爾值數組的TRUE的個數。

arr_sum = np.random.randn(100)

print("大於0.5的值有{0}個".format((arr_sum > 0.5).sum()))

結果以下:

對於布爾值數組,有兩個經常使用方法anyall

any檢查數組中是否至少有一個True,而all檢查是否每一個值都爲True。

04 排序

NumPy數組可使用sort方法按位置排序。

NumPy 提供了多種排序的方法。 這些排序函數實現不一樣的排序算法,每一個排序算法的特徵在於執行速度,最壞狀況性能,所需的工做空間和算法的穩定性。 下表顯示了三種排序算法的比較。

05 惟一值與其餘集合邏輯

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]))

結果以下:

相關文章
相關標籤/搜索