github博客傳送門
csdn博客傳送門python
Numpy_01 建立 指定數據類型 查看維度和數據類型 簡單的數學運算
Numpy_02 索引和切片
Numpy_03 轉置和軸對換
Numpy_04 通用函數
Numpy_05 數據處理
Numpy_06 數組的文件輸入輸出 線性代數git
import numpy as np points = np.arange(-5, 5, 1) # 100個等間距點 xs, ys = np.meshgrid(points, points) # 接收兩個一維數組 返回兩個二維數組 print('xs:\n', xs) # 返回一個 數組元素個數這麼多行的二維數組 內容和一維的數組同樣 print('ys:\n', ys) # 返回一個 數組元素個數這麼多汗的二維數組 內容爲原數組的一個元素爲一行 print('-------------------------------') # 兩點間距離公式 z = np.sqrt(xs ** 2 + ys ** 2) # 對 xs 的每一個元素平方加上 ys 的每一個元素平方 再開方並返回 print(z)
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]) result = [(x if c else y) for x, y, c in zip(xarr, yarr, cond)] # 若是c爲True返回x的值 不然返回y的值 print(result) # 同上功能 result = np.where(cond, xarr, yarr) print(result) arr = np.random.randn(4, 4) # 隨機生成一個 4x4的矩陣 print(arr) # 打印這個矩陣 print(arr > 0) # 判斷arr裏的值是否 > 0 返回True 不然返回 False 最後返回一個 布爾類型的數組 print(np.where(arr > 0, 2, -2)) # 將全部正值 替換爲2 不然替換爲 -2 print(np.where(arr > 0, 2, arr)) # 用 2 替換全部 arr的正值
求平均值,求和github
arr = np.random.randn(5, 4) print(arr) print(arr.mean()) # 求平均值 print(np.mean(arr)) # 求平均值 print(arr.sum()) # 求和
選擇高維數組的軸數組
# mean和sum這類的函數能夠接受一個axis選項參數,用於計算該軸向上的統計值,最終結果是一個少一維的數組: arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) print(arr) # arr.mean(1)是「計算行的平均值」,arr.sum(0)是「計算每列的和」。 print(arr.mean(axis=1)) print(arr.sum(axis=0))
累加函數dom
arr = np.array([0, 1, 2, 3, 4, 5, 6, 7]) print(arr.cumsum()) # 累加函數 第一項等於前一項和 第二項等於前兩項和 第三項等前三項和...
累積函數函數
arr = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) print(arr) print(arr.cumsum(axis=0)) # 累加函數(如cumsum)返回的是一樣大小的數組,可是會根據每一個低維的切片沿着標記軸計算部分聚類 print(arr.cumprod(axis=1)) # 累積函數
下面列出經常使用數據處理的聚合函數的表:
測試
列出了所有的基本數組統計方法.net
arr = np.random.randn(100) print((arr > 0).sum()) # .sum()方法疑是失效 bools = np.array([False, False, True, False]) print(bools.any()) # 測試數組中是否存在一個或多個True print(bools.all()) # 檢查數組中是否全部的值都爲 True # 以上兩個方法也能用於非布爾類型數組,全部非0元素將會被看成True
sort()函數3d
# 例 a = np.array([[3, 7], [9, 1]]) print('咱們的數組是:') print(a) print('\n') print('調用sort()函數:') print(np.sort(a)) print('\n') print('沿軸 0 排序:') print(np.sort(a, axis=0)) print('\n') # 在sort函數中排序字段 dt = np.dtype([('name', 'S10'), ('age', int)]) a = np.array([('raju', 21), ('anil', 25), ('ravi', 17), ('amar', 27)], dtype=dt) print('咱們的數組是:') print(a) print('\n') print('按name排序:') print(np.sort(a, order='name'))
argsort()函數code
# 沒看懂 間接排序 # numpy.argsort() # numpy.argsort()函數對輸入數組沿給定軸執行間接排序,並使用指定排序類型返回數據的索引數組。 這個索引數組用於構造排序後的數組。 arr = np.random.randn(5, 3) print(arr) arr.sort(1) print(arr) x = np.array([3, 1, 2]) print('咱們的數組是:') print(x) print('\n') print('對 x 調用 argsort() 函數:') y = np.argsort(x) print(y) print('\n') print('以排序後的順序重構原數組:') print(x[y]) print('\n') print('使用循環重構原數組:') for i in y: print(x[i])
函數使用鍵序列執行間接排序。 鍵能夠看做是電子表格中的一列。 該函數返回一個索引數組,使用它能夠得到排序數據。
注意,最後一個鍵剛好是 sort 的主鍵。 nm = ('raju', 'anil', 'ravi', 'amar') dv = ('f.y.', 's.y.', 's.y.', 'f.y.') ind = np.lexsort((dv, nm)) print('調用 lexsort()函數:') print(ind) print('\n') print('使用這個索引來獲取排序後的數據:') print([nm[i] + ',' + dv[i] for i in ind])
NumPy提供了一些針對一維ndarray的基本集合運算。最經常使用的可能要數np.unique了,它用於找出數組中的惟一值並返回已排序的結果:
names = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe']) print(np.unique(names)) # 將names數組惟一化 ints = np.array([3, 3, 3, 2, 2, 1, 1, 4, 4]) print(np.unique(ints)) # 將ints數組惟一化 print(sorted(set(names))) # 純Python實現
另外一個函數np.in1d用於測試一個數組中的值在另外一個數組中的成員資格,返回一個布爾型數組:
values = np.array([6, 0, 0, 3, 2, 5, 6]) print(np.in1d(values, [2, 3, 6]))