numpy模組中高階統計函式

2021-10-09 08:56:02 字數 4741 閱讀 7276

1)、計算沿指定軸的元素個數的第q個百分位數,求觀察值n

函式percentile(a, q, axis=none),a為需要統計的集合物件,q為要計算的百分位數或百分位數序列(q的取值區間為[0,100])。返回q%範圍內的觀察值

import numpy as np

a1 = np.array([[

10,0,

9],[

8,9,

9],[

9,10,

9]])

#建立二維陣列

np.percentile(a1,

50,axis=

0)

array([9., 9., 9.])

2、一階差分,計算沿給定軸的n次迭代離散差。

函式diff(a, n=1, axis=-1),a為需要統計的集合物件,n迭代離散差次數,預設值n=1。

沿著指定軸計算第n維的離散差值

引數:a:輸入矩陣

n:可選,代表要執行幾次差值

axis:預設是最後乙個

a1 = np.array([1

,2,4

,8,10

])np.diff(a1)

#後乙個元素減去前乙個元素,生成新的元素

array([1, 2, 4, 2])

3、陣列的連續元素之間的差異。

函式ediff1d(ary, to_end=none, to_begin=none),ary為需要統計的集合物件;to_end可選,在返回的差異結束時追加的數字(或集合元素);to_begin,返回差異開頭前的數字。

d1 = np.array([1

,2,4

,8,3

])np.ediff1d(d1)

#只有arr引數 情況下,後一元素減去前一元素產生新元素

array([ 1, 2, 4, -5])

np.ediff1d(d1,to_begin=[0

,0],to_end=10)

#增加to_end,to_begin引數情況下

array([ 0, 0, 1, 2, 4, -5, 10])

4、梯度計算

函式gradient(f),f為需要計算的集合物件

g1 = np.array([1

,3,5

,7,10

,15])

np.gradient(g1)

#對一維陣列元素進行梯度計算

array([2. , 2. , 2. , 2.5, 4. , 5. ])

g2 = np.arange(9)

.reshape((3

,3))

np.gradient(g2)

#對二維陣列的順序元素進行計算

[array([[3., 3., 3.],

[3., 3., 3.],

[3., 3., 3.]]),

array([[1., 1., 1.],

[1., 1., 1.],

[1., 1., 1.]])]

5、使用復合梯形規則沿給定軸積分

np.trapz([[

1,2,

3],[

4,5,

6]],axis=1)

#以行為單位進行積分

array([ 4., 10.])

2)、排序

函式sort(a, axis=-1),a為需要統計的集合物件,axis=0以列為單位進行排序,axis=1以行為單位進行排序.

a1 = np.array([[

100,0,

45],[

12,89,

35],[

50,40,

60]])

np.sort(a1,axis=1)

#按行為單位進行排序

array([[ 0, 45, 100],

[ 12, 35, 89],

[ 40, 50, 60]])

a1.sort(axis=0)

#用陣列方法sort()排序,改變原有陣列

a1

array([[ 12, 0, 35],

[ 50, 40, 45],

[100, 89, 60]])

3)、將數值替換到陣列指定位置

1、根據條件和輸入值更改陣列的元素

函式place(arr, mask, vals),arr為陣列物件,mask為符合條件的邏輯表示式,vals為需要插入的標量或集合物件。等價於putmask ()函式的用法和功能。

p1 = np.array([[

1,8,

10],[

2,7,

9],[

11,23,

33]])

np.place(p1,p1>10,

[0,1

])#對於陣列裡元素大於10的依次用

#0,1代替place()的計算結果直接改變了陣列p1的元素值,而非產生臨時新陣列

p1

array([[ 1, 8, 10],

[ 2, 7, 9],

[ 0, 1, 0]])

2、用給定值替換陣列的指定元素.

函式put(a, ind, v, mode=『raise』),a為需要替換的陣列物件,ind為替換順序下標位置,v為提供可以替換數值的集合物件

p2 = np.ones(9)

.reshape((3

,3))

np.put(p2,[3

,4,5

],0)

#ind為p2的順序下標3,4,5,替換值0

p2

array([[1., 1., 1.],

[0., 0., 0.],

[1., 1., 1.]])

3、通過指定axis和花式索引將值放入目標陣列.

函式put_along_axis(arr, indices, values, axis),arr為需要替換的陣列物件,indices花式索引(見3.3.3節)確定需要替換的下標範圍,values為提供的可以替換的數值或集合。上述四個引數為必選項。

p3 = np.ones(9)

.reshape((3

,3))

np.put_along_axis(p3,np.array([[

1],[

1],[

1]])

,0,axis=1)

p3

array([[1., 0., 1.],

[1., 0., 1.],

[1., 0., 1.]])

4、填充任何維度的給定陣列的主對角線.

函式fill_diagonal(a, val, wrap=false),a至少是2維陣列,val為主對角線上需要填寫的數值。

z1 = np.zeros(9)

.reshape((3

,3))

np.fill_diagonal(z1,5)

z1

array([[5., 0., 0.],

[0., 5., 0.],

[0., 0., 5.]])

4)、增加和刪​​除行(列)

**1、刪除陣列行(列)元素

函式delete(arr, obj, axis=none),arr為陣列物件,obj為下標切片、下標標量、下標列表、下標整數陣列,axis=none預設值,刪除後的新陣列為一維陣列,在axis=1的情況下,保留元素按照行方向形成新陣列;在axis=0的情況下,保留元素按照列方向形成新陣列。

(1)下標切片刪除

d = np.arange(9)

.reshape((3

,3))

np.delete(d,np.s_[:2

],axis=1)

#在行方法上,刪除d陣列的1,2列

array([[2],

[5],

[8]])

d = np.arange(9)

.reshape((3

,3))

np.delete(d,np.s_[:2

],axis=0)

#在列方向上,刪除d陣列的1,2行

array([[6, 7, 8]])

(2)指定下標數刪除

(3)指定下標陣列刪除

函式的中高階和高階,插入點模組

補充 資料型別中的方法到底有沒有返回值?僅有返回值 v alex result v.split l v result1 v.get k1 result2 v.keys 有返回 修改資料 v 11,22,33 result v.pop 常用需要記住 list insert,無 pop,返回要刪除的資料...

python中高階函式

一等公民 高階函式 高階函式 high order function def counter base def inc step 1 nonlocal base base step return base return inc 上面的counter是高階函式,因為return inc,即返回函式 內...

numpy常用函式統計

import numpy as np import pandas as pd np.ceil 向上取整 np.floor 向下取整 np.rint 四捨五入 np.abs 取絕對值 np.negative 元素取反 np.square 平方 np.sqrt 平方根 np.modf 分成小數和整數部分...