Python-Numpy常用函式總結
阿新 • • 發佈:2019-02-20
1、np.arange(x,y,z)
建立公差為z的等差一維陣列
例:
b = np.arange(1,5,1)
b:[1 2 3 4]
b2_1,b2_2=np.meshgrid(x,y)
3、陣列維度
np.ndim(b2_1)
b2_1:2
4、各個維度的尺度
np.shape(b2_1)
b2_1:(3,3)
5、陣列元素個數
np.size(b2_1)
b2_1:9
6、生成全1陣列
np.ones(shape)
生成int32型的全0
np.zeros((shape), dtype = np.int32)
例:
np.ones((2,3))
[[ 1. 1. 1.]
[ 1. 1. 1.]]
np.full(shape, val): 生成全為val
np.eye(n) : 生成單位矩陣
例:
np.full((2,3),2)
[[2 2 2]
[2 2 2]]
np.eye(2)
[[ 1. 0.]
[ 0. 1.]]
7、np.ones_like(a) : 按陣列a的形狀生成全1的陣列
np.zeros_like(a): 同理
np.full_like (a, val) : 同理
8、生成一個包含四個元素的陣列
np.linspace(1,10,4)
[ 1. 4. 7. 10.]
np.linspace(1,10,4, endpoint = False)
[ 1. 3.25 5.5 7.75]
9、陣列拼接:concatenate()
x=np.array([1,2,3])
y=np.array([1,2,3])
np.concatenate((x,y),axis=0)
[1 2 3 1 2 3]
10、np.reshape(shape) : 不改變當前陣列,依shape生成
np.resize(shape) : 改變當前陣列,依shape生成
np.swapaxes(ax1, ax2) : 將兩個維度調換
np.flatten() : 對陣列進行降維,返回摺疊後的一位陣列
例:
b=[[1 2 3]
[1 2 3]
[1 2 3]]
c = np.reshape(b,(1,9))
c =[[1 2 3 1 2 3 1 2 3]]
x1=np.random.randn(2,3)
print(x1)
x1.resize(3,2)
print(x1)
[[-0.58306661 0.95827659 -0.88354229]
[ 1.003802 1.45425069 0.23221529]]
[[-0.58306661 0.95827659]
[-0.88354229 1.003802 ]
[ 1.45425069 0.23221529]]
arr = np.arange(16).reshape((2,2,4))
print(arr)
print(arr.swapaxes(1,2)
[[[ 0 1 2 3]
[ 4 5 6 7]]
[[ 8 9 10 11]
[12 13 14 15]]]
[[[ 0 4]
[ 1 5]
[ 2 6]
[ 3 7]]
[[ 8 12]
[ 9 13]
[10 14]
[11 15]]]
a = np.array([[1,2], [3,4]])
print(a.flatten()) #按行的方向排列
print(a.flatten('F')) #按列的方向排列
[1 2 3 4]
[1 3 2 4]
11、np.abs(a) np.fabs(a) : 取各元素的絕對值
np.sqrt(a) : 計算各元素的平方根
np.square(a): 計算各元素的平方
np.log(a) np.log10(a) np.log2(a) : 計算各元素的自然對數、10、2為底的對數
np.ceil(a) np.floor(a) : 計算各元素的ceiling 值, floor值(ceiling向上取整,floor向下取整)
np.rint(a) : 各元素 四捨五入
np.modf(a) : 將陣列各元素的小數和整數部分以兩個獨立陣列形式返回
np.exp(a) : 計算各元素的指數值
np.sign(a) : 計算各元素的符號值 1(+),0,-1(-)
.
np.maximum(a, b) np.fmax() : 比較(或者計算)元素級的最大值
np.minimum(a, b) np.fmin() : 取最小值
np.mod(a, b) : 元素級的模運算
np.copysign(a, b) : 將b中各元素的符號賦值給陣列a的對應元素
12、np.random.rand(d0, d1, …,dn) : 各元素是[0, 1)的浮點數,服從均勻分佈
np.random.randn(d0, d1, …,dn):標準正態分佈
np.random.randint(low, high,( shape)): 依shape建立隨機整數或整數陣列,範圍是[ low, high)
np.random.seed(s) : 隨機數種子
np.random.shuffle(a) : 根據陣列a的第一軸進行隨機排列,改變陣列a
np.random.permutation(a) : 根據陣列a的第一軸進行隨機排列, 但是不改變原陣列,將生成新陣列
np.random.choice(a,[, size, replace, p]) : 從一維陣列a中以概率p抽取元素, 形成size形狀新陣列,replace表示是否可以重用元素,預設為False。
x2 = np.random.rand(3,3)
print(x2)
x3=np.random.randn(3,3)
print(x3)
x4=np.random.randint(1,5,(3,3))
print(x4)
np.random.shuffle(x4)
print(x4)
x5=np.random.permutation(x2)
print(x5)
x6=np.random.randint(100,200,(8,))
x7=np.random.choice(x6,(2,2),replace=False)
print(x7)
[[ 0.49135165 0.69267735 0.7785192 ]
[ 0.91731843 0.79043115 0.17239938]
[ 0.75339545 0.48626669 0.82104145]]
[[-0.13574689 1.08502621 0.23511304]
[-0.97468531 0.41565717 0.21193764]
[-0.38974451 1.70751878 -0.32619712]]
[[2 1 1]
[2 1 1]
[4 1 3]]
[[2 1 1]
[4 1 3]
[2 1 1]]
[[ 0.49135165 0.69267735 0.7785192 ]
[ 0.75339545 0.48626669 0.82104145]
[ 0.91731843 0.79043115 0.17239938]]
[[179 141]
[141 179]]
13、np.random.uniform(low, high, size) : 產生均勻分佈的陣列,起始值為low,high為結束值,size為形狀
np.random.normal(loc, scale, size) : 產生正態分佈的陣列, loc為均值,scale為標準差,size為形狀
np.random.poisson(lam, size) : 產生泊松分佈的陣列, lam隨機事件發生概率,size為形狀
14、sum(a, axis = None) : 依給定軸axis計算陣列a相關元素之和,axis為整數或者元組
mean(a, axis = None) : 同理,計算平均值
average(a, axis =None, weights=None) : 依給定軸axis計算陣列a相關元素的加權平均值
std(a, axis = None) :同理,計算標準差
var(a, axis = None): 計算方差
min(a) max(a) : 計算陣列a的最小值和最大值
argmin(a) argmax(a) : 計算陣列a的最小、最大值的下標(注:是一維的下標)
unravel_index(index, shape) : 根據shape將一維下標index轉成多維下標
ptp(a) : 計算陣列a最大值和最小值的差
median(a) : 計算陣列a中元素的中位數(中值)
cumsum() #累計和
cumprod() #累計積
np.gradient(a) : 計算陣列a中元素的梯度,f為多維時,返回每個維度的梯度
離散梯度: xy座標軸連續三個x軸座標對應的y軸值:a, b, c 其中b的梯度是(c-a)/2
而c的梯度是: (c-b)/1
當為二維陣列時,np.gradient(a) 得出兩個陣列,第一個陣列對應最外層維度的梯度,第二個陣列對應第二層維度的梯度。
14、矩陣乘法:
x = np.array([[1,2,3],[4,5,6]])
y = np.array([[6,23],[-1,7],[8,9]])
r=np.dot(x, y)#注意:x的列數要等於y的行數
print(r)
[[ 28 64]
[ 67 181]]
15、b=np.c_[np.array([1,2,3]),np.array([4,5,6])]
print(b)
[[1 4]
[2 5]
[3 6]]
16、將多維陣列轉化為一維陣列
x = np.array([[1,2,3],[4,5,6]])
print(x.ravel())
[1 2 3 4 5 6]
17、random函式
random.rand(3,2)返回3*2的array型別的陣列,陣列值為隨機值
random.randn()返回一個樣本,具有標準正態分佈的數值
random.randint(2,size=10)返回[0,2)半開區間的隨機整數,有十個元素
random.random_integers(5,size=(3,4))返回[0,5]閉區間的隨機整數,維度為3*2
random.random_sample(size=(3,2))返回半開區間[0.0,1.0)的隨機浮點數
random.random(size=(3,2))和randomz_sample()函式完全一樣
random.ranf(size=(3,2))和randomz_sample()函式完全一樣
random.sample(size=(3,2))和randomz_sample()函式完全一樣
random.choice(a,size,replace,p)生成一個隨機樣本,從一個給定的一維陣列
random.bytes(length)返回隨機位元組
排序:
random.shuffle(x)修改序列,改變x的自身內容,類似洗牌。
permutation(x)返回一個隨機序列,不修改x的內容
建立公差為z的等差一維陣列
例:
b = np.arange(1,5,1)
b:[1 2 3 4]
2、np.meshgrid(x,y)
x=np.array([1,2]),y=np.array([3])
例:b2_1,b2_2=np.meshgrid(x,y)
b2_1: [[1 2 3] [1 2 3][1 2 3]]
b2_2: [[1 1 1][2 2 2][3 3 3]]3、陣列維度
np.ndim(b2_1)
b2_1:2
4、各個維度的尺度
np.shape(b2_1)
b2_1:(3,3)
5、陣列元素個數
np.size(b2_1)
b2_1:9
6、生成全1陣列
np.ones(shape)
生成int32型的全0
np.zeros((shape), dtype = np.int32)
例:
np.ones((2,3))
[[ 1. 1. 1.]
[ 1. 1. 1.]]
np.full(shape, val): 生成全為val
np.eye(n) : 生成單位矩陣
例:
np.full((2,3),2)
[[2 2 2]
[2 2 2]]
np.eye(2)
[[ 1. 0.]
[ 0. 1.]]
7、np.ones_like(a) : 按陣列a的形狀生成全1的陣列
np.zeros_like(a): 同理
np.full_like (a, val) : 同理
8、生成一個包含四個元素的陣列
np.linspace(1,10,4)
[ 1. 4. 7. 10.]
np.linspace(1,10,4, endpoint = False)
[ 1. 3.25 5.5 7.75]
9、陣列拼接:concatenate()
x=np.array([1,2,3])
y=np.array([1,2,3])
np.concatenate((x,y),axis=0)
[1 2 3 1 2 3]
10、np.reshape(shape) : 不改變當前陣列,依shape生成
np.resize(shape) : 改變當前陣列,依shape生成
np.swapaxes(ax1, ax2) : 將兩個維度調換
np.flatten() : 對陣列進行降維,返回摺疊後的一位陣列
例:
b=[[1 2 3]
[1 2 3]
[1 2 3]]
c = np.reshape(b,(1,9))
c =[[1 2 3 1 2 3 1 2 3]]
x1=np.random.randn(2,3)
print(x1)
x1.resize(3,2)
print(x1)
[[-0.58306661 0.95827659 -0.88354229]
[ 1.003802 1.45425069 0.23221529]]
[[-0.58306661 0.95827659]
[-0.88354229 1.003802 ]
[ 1.45425069 0.23221529]]
arr = np.arange(16).reshape((2,2,4))
print(arr)
print(arr.swapaxes(1,2)
[[[ 0 1 2 3]
[ 4 5 6 7]]
[[ 8 9 10 11]
[12 13 14 15]]]
[[[ 0 4]
[ 1 5]
[ 2 6]
[ 3 7]]
[[ 8 12]
[ 9 13]
[10 14]
[11 15]]]
a = np.array([[1,2], [3,4]])
print(a.flatten()) #按行的方向排列
print(a.flatten('F')) #按列的方向排列
[1 2 3 4]
[1 3 2 4]
11、np.abs(a) np.fabs(a) : 取各元素的絕對值
np.sqrt(a) : 計算各元素的平方根
np.square(a): 計算各元素的平方
np.log(a) np.log10(a) np.log2(a) : 計算各元素的自然對數、10、2為底的對數
np.ceil(a) np.floor(a) : 計算各元素的ceiling 值, floor值(ceiling向上取整,floor向下取整)
np.rint(a) : 各元素 四捨五入
np.modf(a) : 將陣列各元素的小數和整數部分以兩個獨立陣列形式返回
np.exp(a) : 計算各元素的指數值
np.sign(a) : 計算各元素的符號值 1(+),0,-1(-)
.
np.maximum(a, b) np.fmax() : 比較(或者計算)元素級的最大值
np.minimum(a, b) np.fmin() : 取最小值
np.mod(a, b) : 元素級的模運算
np.copysign(a, b) : 將b中各元素的符號賦值給陣列a的對應元素
12、np.random.rand(d0, d1, …,dn) : 各元素是[0, 1)的浮點數,服從均勻分佈
np.random.randn(d0, d1, …,dn):標準正態分佈
np.random.randint(low, high,( shape)): 依shape建立隨機整數或整數陣列,範圍是[ low, high)
np.random.seed(s) : 隨機數種子
np.random.shuffle(a) : 根據陣列a的第一軸進行隨機排列,改變陣列a
np.random.permutation(a) : 根據陣列a的第一軸進行隨機排列, 但是不改變原陣列,將生成新陣列
np.random.choice(a,[, size, replace, p]) : 從一維陣列a中以概率p抽取元素, 形成size形狀新陣列,replace表示是否可以重用元素,預設為False。
x2 = np.random.rand(3,3)
print(x2)
x3=np.random.randn(3,3)
print(x3)
x4=np.random.randint(1,5,(3,3))
print(x4)
np.random.shuffle(x4)
print(x4)
x5=np.random.permutation(x2)
print(x5)
x6=np.random.randint(100,200,(8,))
x7=np.random.choice(x6,(2,2),replace=False)
print(x7)
[[ 0.49135165 0.69267735 0.7785192 ]
[ 0.91731843 0.79043115 0.17239938]
[ 0.75339545 0.48626669 0.82104145]]
[[-0.13574689 1.08502621 0.23511304]
[-0.97468531 0.41565717 0.21193764]
[-0.38974451 1.70751878 -0.32619712]]
[[2 1 1]
[2 1 1]
[4 1 3]]
[[2 1 1]
[4 1 3]
[2 1 1]]
[[ 0.49135165 0.69267735 0.7785192 ]
[ 0.75339545 0.48626669 0.82104145]
[ 0.91731843 0.79043115 0.17239938]]
[[179 141]
[141 179]]
13、np.random.uniform(low, high, size) : 產生均勻分佈的陣列,起始值為low,high為結束值,size為形狀
np.random.normal(loc, scale, size) : 產生正態分佈的陣列, loc為均值,scale為標準差,size為形狀
np.random.poisson(lam, size) : 產生泊松分佈的陣列, lam隨機事件發生概率,size為形狀
14、sum(a, axis = None) : 依給定軸axis計算陣列a相關元素之和,axis為整數或者元組
mean(a, axis = None) : 同理,計算平均值
average(a, axis =None, weights=None) : 依給定軸axis計算陣列a相關元素的加權平均值
std(a, axis = None) :同理,計算標準差
var(a, axis = None): 計算方差
min(a) max(a) : 計算陣列a的最小值和最大值
argmin(a) argmax(a) : 計算陣列a的最小、最大值的下標(注:是一維的下標)
unravel_index(index, shape) : 根據shape將一維下標index轉成多維下標
ptp(a) : 計算陣列a最大值和最小值的差
median(a) : 計算陣列a中元素的中位數(中值)
cumsum() #累計和
cumprod() #累計積
np.gradient(a) : 計算陣列a中元素的梯度,f為多維時,返回每個維度的梯度
離散梯度: xy座標軸連續三個x軸座標對應的y軸值:a, b, c 其中b的梯度是(c-a)/2
而c的梯度是: (c-b)/1
當為二維陣列時,np.gradient(a) 得出兩個陣列,第一個陣列對應最外層維度的梯度,第二個陣列對應第二層維度的梯度。
14、矩陣乘法:
x = np.array([[1,2,3],[4,5,6]])
y = np.array([[6,23],[-1,7],[8,9]])
r=np.dot(x, y)#注意:x的列數要等於y的行數
print(r)
[[ 28 64]
[ 67 181]]
15、b=np.c_[np.array([1,2,3]),np.array([4,5,6])]
print(b)
[[1 4]
[2 5]
[3 6]]
16、將多維陣列轉化為一維陣列
x = np.array([[1,2,3],[4,5,6]])
print(x.ravel())
[1 2 3 4 5 6]
17、random函式
random.rand(3,2)返回3*2的array型別的陣列,陣列值為隨機值
random.randn()返回一個樣本,具有標準正態分佈的數值
random.randint(2,size=10)返回[0,2)半開區間的隨機整數,有十個元素
random.random_integers(5,size=(3,4))返回[0,5]閉區間的隨機整數,維度為3*2
random.random_sample(size=(3,2))返回半開區間[0.0,1.0)的隨機浮點數
random.random(size=(3,2))和randomz_sample()函式完全一樣
random.ranf(size=(3,2))和randomz_sample()函式完全一樣
random.sample(size=(3,2))和randomz_sample()函式完全一樣
random.choice(a,size,replace,p)生成一個隨機樣本,從一個給定的一維陣列
random.bytes(length)返回隨機位元組
排序:
random.shuffle(x)修改序列,改變x的自身內容,類似洗牌。
permutation(x)返回一個隨機序列,不修改x的內容