1、建立數組數組
一、建立數組的函數less
- array:將輸入數據(列表、元組、數組或其餘序列類型)轉換爲ndarray,可用dtype指定數據類型。
>>> import numpy as np >>> a=np.array([1,2,3]) >>> a array([1, 2, 3]) >>> c=np.array([1,2,3],dtype=float) #使用的type指定數據類型
>>> c
array([ 1., 2., 3.])
>>> c=c.astype(int) #使用astype更改數據類型
>>> c
array([1, 2, 3])
- arange:相似於range,但返回的不是列表而是ndarray。
>>> g=np.arange(5) >>> g array([0, 1, 2, 3, 4]) >>> k=np.arange(6).reshape(2,3) >>> k array([[0, 1, 2], [3, 4, 5]])
- ones、ones_like:建立全是1的數組。
>>> c=np.ones((2,3),dtype=np.int) >>> c array([[1, 1, 1], [1, 1, 1]]) >>> d=np.ones_like(c) #d的形狀和dtype與c相同 >>> d array([[1, 1, 1], [1, 1, 1]])
- zeros、zeros_like:建立全是0的數組。
>>> f=np.zeros((2,3,2)) >>> f array([[[ 0., 0.], [ 0., 0.], [ 0., 0.]], [[ 0., 0.], [ 0., 0.], [ 0., 0.]]]) >>> g=np.zeros_like(f) #g的形狀和dtype與f相同 >>> g array([[[ 0., 0.], [ 0., 0.], [ 0., 0.]], [[ 0., 0.], [ 0., 0.], [ 0., 0.]]])
- empty,empty_like:建立新數組,只分配內存但不填充任何值。
注:empty數據並非空的數組,也不是全爲0的數組,它返回的是一些未初始化的垃圾值。dom
>>> k=np.empty((2,3))
>>> k
array([[ 6.23042070e-307, 3.56043053e-307, 1.37961641e-306],
[ 8.06612192e-308, 2.22523004e-307, 2.44031977e-312]])
>>> g=np.empty_like(k) #g的形狀和dtype與k相同
>>> g
array([[ 6.23042070e-307, 3.56043053e-307, 1.37961641e-306],
[ 8.06612192e-308, 2.22523004e-307, 2.44031977e-312]])
- eye、identity:建立一個正方的N*N的單位矩陣(對角線爲1,其餘爲0)
np.eye(N, M=None, k=0, dtype=<type ‘float’>)
能夠建立矩形矩陣,且k值能夠調節,爲1的對角線的位置偏離度,0居中,1向上偏離1,2偏離2,以此類推,-1向下偏離。值絕對值過大就偏離出去了,整個矩陣就全是0了。ide
>>> l=np.eye(3,4,1) #3行4列,爲1的對角線向上移一位 >>> l array([[ 0., 1., 0., 0.], [ 0., 0., 1., 0.], [ 0., 0., 0., 1.]]) >>> l1=np.eye(3,3,-1) #3行3列,爲1的對角線向下移一位 >>> l1 array([[ 0., 0., 0.], [ 1., 0., 0.], [ 0., 1., 0.]]) >>> j=np.identity(3) #建立方形單位矩陣(對角線爲1,其他爲0) >>> j array([[ 1., 0., 0.], [ 0., 1., 0.], [ 0., 0., 1.]])
二、Numpy的數據類型函數
三、 查看數組維度、數組形狀、數據類型測試
>>> a=np.random.randn(4,3) >>> a array([[-1.67075275, -0.53713536, -1.54479383], [-0.95460603, 2.097174 , -0.61332423], [-1.92818377, -0.00663392, 1.34561876], [ 0.54646619, -0.85965155, -0.70237827]]) >>> a.ndim #查看維度 2 >>> a.shape #查看形狀 (4, 3) >>> a.dtype #查看數據類型 dtype('float64')
2、索引、切片spa
- 利用行列號索引、切片
>>> a array([[0, 1, 2], [3, 4, 5]]) >>> a[0] array([0, 1, 2]) >>> a[0][2] 2 >>> a[0][1:] array([1, 2]) >>> a[:,:1] array([[0], [3]]) >>> a[:,:2] array([[0, 1], [3, 4]])
- 利用整數數組作花式索引
>>> a=np.arange(20).reshape(5,4) >>> a array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15], [16, 17, 18, 19]]) >>> a[[0,2,4]] #選取第0,2,4行元素 array([[ 0, 1, 2, 3], [ 8, 9, 10, 11], [16, 17, 18, 19]]) >>> a[[0,2,1],[1]] #意爲選取(0,1),(2,1),(1,1)的元素 array([1, 9, 5]) >>> a[[0,2,1]][:,[2,0]]#意爲選取0、二、1行,2,0列的元素 array([[ 2, 0], [10, 8], [ 6, 4]])
- 條件索引
>>> a=np.random.randn(4,3) >>> a array([[-0.04603611, -1.04144497, 0.78488753], [-0.06099172, 0.31987999, 0.62553966], [-0.44534405, -0.33631437, 0.07821993], [-0.56541056, -0.42975815, -0.65669226]]) >>> a[a<0] array([-0.04603611, -1.04144497, -0.06099172, -0.44534405, -0.33631437, -0.56541056, -0.42975815, -0.65669226]) >>> b=np.array(['rose','lily','tulips','hyacinth']) >>> b==‘lily‘ #條件判斷,返回布爾數組 array([False, True, False, False], dtype=bool) >>> a[b==‘lily’] #用布爾數組判斷,返回布爾爲true的行,注行數要與布爾數組的長度相同 array([[-0.06099172, 0.31987999, 0.62553966]])>>> b!='rose' #條件非寫法
>>> c=(b=='rose')|(b=='lily') #條件或寫法,不能寫成or >>> c #多個條件判斷 array([ True, True, False, False], dtype=bool) >>> a[c] array([[-0.04603611, -1.04144497, 0.78488753], [-0.06099172, 0.31987999, 0.62553966]])
array([False, True, True, True], dtype=bool)
>>> f=(b=='rose')&(b=='lily') #條件與寫法,不能寫成and
>>> f
array([False, False, False, False], dtype=bool)
3、數組和標量間的運算code
大小相等的數組間的算術運算會應用到元素級。blog
>>> a=np.arange(6).reshape(2,3) >>> a array([[0, 1, 2], [3, 4, 5]]) >>> a*a array([[ 0, 1, 4], [ 9, 16, 25]]) >>> a+a array([[ 0, 2, 4], [ 6, 8, 10]]) >>> a-a array([[0, 0, 0], [0, 0, 0]]) >>> a/a array([[ nan, 1., 1.], [ 1., 1., 1.]]) >>> a*2 array([[ 0, 2, 4], [ 6, 8, 10]]) >>> a/2 array([[ 0. , 0.5, 1. ], [ 1.5, 2. , 2.5]]) >>> a**0.5 array([[ 0. , 1. , 1.41421356], [ 1.73205081, 2. , 2.23606798]])
4、數組轉置和軸對換排序
- T:轉置
>>> a=np.arange(6).reshape(3,2) >>> a array([[0, 1], [2, 3], [4, 5]]) >>> a.T #轉置 array([[0, 2, 4], [1, 3, 5]])
- transpose:傳入一個由軸編號組成的元組,對這些軸進行轉置
>>> arr=np.arange(16).reshape(2,2,4) >>> arr array([[[ 0, 1, 2, 3], [ 4, 5, 6, 7]], [[ 8, 9, 10, 11], [12, 13, 14, 15]]]) >>> arr.transpose(0,2,1) #transpose(行、列、層)分別用數字0,1,2表明,arr.transpose(0,2,1)意爲列、層對換 array([[[ 0, 4], [ 1, 5], [ 2, 6], [ 3, 7]], [[ 8, 12], [ 9, 13], [10, 14], [11, 15]]])
- swapaxes:接受一對軸編號
>>> arr.swapaxes(1,2) #接受一對軸編號,列、層對調 array([[[ 0, 4], [ 1, 5], [ 2, 6], [ 3, 7]], [[ 8, 12], [ 9, 13], [10, 14], [11, 15]]])
5、函數
- abs,fabs :計算整數、浮點數、複數的絕對值,對於非複數,fabs更快
>>> a=np.random.randn(3,4) >>> a array([[ 1.38259684, 1.5849254 , 0.4449462 , 0.2385593 ], [ 1.00091383, -1.09375872, -0.02773304, 0.53630798], [ 0.57737587, 1.60649999, -0.20384362, -1.22109508]]) >>> np.abs(a) array([[ 1.38259684, 1.5849254 , 0.4449462 , 0.2385593 ], [ 1.00091383, 1.09375872, 0.02773304, 0.53630798], [ 0.57737587, 1.60649999, 0.20384362, 1.22109508]]) >>> np.fabs(a) array([[ 1.38259684, 1.5849254 , 0.4449462 , 0.2385593 ], [ 1.00091383, 1.09375872, 0.02773304, 0.53630798], [ 0.57737587, 1.60649999, 0.20384362, 1.22109508]])
- sqrt:計算平方根
>>> b=np.arange(4).reshape(2,2) >>> b array([[0, 1], [2, 3]]) >>> np.sqrt(b) array([[ 0. , 1. ], [ 1.41421356, 1.73205081]])
- square:計算平方
>>> b array([[0, 1], [2, 3]]) >>> np.square(b) array([[0, 1], [4, 9]], dtype=int32)
- exp計算指數𝑒^𝑥
>>> np.exp(b) array([[ 1. , 2.71828183], [ 7.3890561 , 20.08553692]])
- log、log十、log二、log1p :分佈爲天然對數(以e爲底),底數爲10的log,底數爲2的log,log(1+x)
>>> c=np.arange(1,10).reshape(3,3) >>> c array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) >>> np.log10(c) array([[ 0. , 0.30103 , 0.47712125], [ 0.60205999, 0.69897 , 0.77815125], [ 0.84509804, 0.90308999, 0.95424251]])
- sign:計算各元素的正負號1(正數)、0(零)、-1(負數)
>>> a array([[ 1.38259684, 1.5849254 , 0.4449462 , 0.2385593 ], [ 1.00091383, -1.09375872, -0.02773304, 0.53630798], [ 0.57737587, 1.60649999, -0.20384362, -1.22109508]]) >>> np.sign(a) array([[ 1., 1., 1., 1.], [ 1., -1., -1., 1.], [ 1., 1., -1., -1.]])
- ceil:返回數字的上入整數。
>>> a array([[ 1.38259684, 1.5849254 , 0.4449462 , 0.2385593 ], [ 1.00091383, -1.09375872, -0.02773304, 0.53630798], [ 0.57737587, 1.60649999, -0.20384362, -1.22109508]]) >>> np.ceil(a) array([[ 2., 2., 1., 1.], [ 2., -1., -0., 1.], [ 1., 2., -0., -1.]])
- floor:返回數字的下舍整數
>>> a array([[ 1.38259684, 1.5849254 , 0.4449462 , 0.2385593 ], [ 1.00091383, -1.09375872, -0.02773304, 0.53630798], [ 0.57737587, 1.60649999, -0.20384362, -1.22109508]]) >>> np.floor(a) array([[ 1., 1., 0., 0.], [ 1., -2., -1., 0.], [ 0., 1., -1., -2.]])
- rint:將各元素四捨五入到最接近的整數
>>> a array([[ 1.38259684, 1.5849254 , 0.4449462 , 0.2385593 ], [ 1.00091383, -1.09375872, -0.02773304, 0.53630798], [ 0.57737587, 1.60649999, -0.20384362, -1.22109508]]) >>> np.rint(a) array([[ 1., 2., 0., 0.], [ 1., -1., -0., 1.], [ 1., 2., -0., -1.]])
- modf:將數字的小數和整數部分以兩個獨立數組的形式返回
>>> a array([[ 1.38259684, 1.5849254 , 0.4449462 , 0.2385593 ], [ 1.00091383, -1.09375872, -0.02773304, 0.53630798], [ 0.57737587, 1.60649999, -0.20384362, -1.22109508]]) >>> np.modf(a) (array([[ 0.38259684, 0.5849254 , 0.4449462 , 0.2385593 ], [ 0.00091383, -0.09375872, -0.02773304, 0.53630798], [ 0.57737587, 0.60649999, -0.20384362, -0.22109508]]), array([[ 1., 1., 0., 0.], [ 1., -1., -0., 0.], [ 0., 1., -0., -1.]]))
- isnan:返回一個表示是否爲nan的布爾型數組
>>> a array([[ 1.38259684, 1.5849254 , 0.4449462 , 0.2385593 ], [ 1.00091383, -1.09375872, -0.02773304, 0.53630798], [ 0.57737587, 1.60649999, -0.20384362, -1.22109508]]) >>> np.isnan(a) array([[False, False, False, False], [False, False, False, False], [False, False, False, False]], dtype=bool)
- isfinite、isinf:分別返回一個表示‘哪些元素是有窮的(非inf 非nan)’,和‘哪些元素是無窮的’布爾型數組
>>> a array([[ 1.38259684, 1.5849254 , 0.4449462 , 0.2385593 ], [ 1.00091383, -1.09375872, -0.02773304, 0.53630798], [ 0.57737587, 1.60649999, -0.20384362, -1.22109508]]) >>> np.isfinite(a) #是不是有窮的(非空即有窮) array([[ True, True, True, True], [ True, True, True, True], [ True, True, True, True]], dtype=bool) >>> np.isinf(a) #是不是無窮 array([[False, False, False, False], [False, False, False, False], [False, False, False, False]], dtype=bool)
- add:將數組中對應的元素相加
>>> b=np.arange(6).reshape(3,2) >>> b array([[0, 1], [2, 3], [4, 5]]) >>> np.add(b,b) array([[ 0, 2], [ 4, 6], [ 8, 10]])
- substract:從第一個數組中減去第二個數組
>>> d=np.arange(6,0,-1).reshape(3,2) >>> d array([[6, 5], [4, 3], [2, 1]]) >>> np.subtract(b,d) #b-d array([[-6, -4], [-2, 0], [ 2, 4]])
- multiply:數組相乘
>>> b array([[0, 1], [2, 3], [4, 5]]) >>> np.multiply(b,b) array([[ 0, 1], [ 4, 9], [16, 25]])
- divide,floor_divide:除法、向下整除法
>>> np.divide(b,d) #b/d array([[ 0. , 0.2], [ 0.5, 1. ], [ 2. , 5. ]]) >>> np.floor_divide(b,d) array([[0, 0], [0, 1], [2, 5]], dtype=int32)
- power:計算 第一個數組^第二個數組
>>> f=np.empty((3,2)) #構建一個空數組 >>> f[:]=2 #f中元素都賦值爲2 >>> f array([[ 2., 2.], [ 2., 2.], [ 2., 2.]]) >>> np.power(b,f) #b^f array([[ 0., 1.], [ 4., 9.], [ 16., 25.]])
- maximum,fmax:返回兩個數組中的最大值,fmax忽略nan
>>> b array([[0, 1], [2, 3], [4, 5]]) >>> d array([[6, 5], [4, 3], [2, 1]]) >>> np.maximum(b,d) array([[6, 5], [4, 3], [4, 5]])
- minimum,fmin:返回兩個數組中的最小值,fmin忽略nan
>>> np.minimum(b,d) array([[0, 1], [2, 3], [2, 1]])
- mod:求餘數
>>> np.mod(b,d) #求b/d的餘數 array([[0, 1], [2, 0], [0, 0]], dtype=int32) >>> np.divide(b,d)
- copysign:將第二個數組的值的符合複製給第一個數組中的值
>>> f array([[-2., -2.], [ 2., 2.], [ 2., 2.]]) >>> np.copysign(b,f) #把f的符號賦值給b array([[-0., -1.], [ 2., 3.], [ 4., 5.]])
- greater、greater_equal、less、less_equal、equal、not equal,執行比較運算(>,>=,<,<=,=,!=) ,返回布爾值
>>> b array([[0, 1], [2, 3], [4, 5]]) >>> d array([[6, 5], [4, 3], [2, 1]]) >>> np.equal(b,d) array([[False, False], [False, True], [False, False]], dtype=bool) >>> np.greater(b,d) #b>d array([[False, False], [False, False], [ True, True]], dtype=bool)
- logical_and,logical_or,logical_xor:執行邏輯運算(&,|,^)
>>> np.logical_and(b,d) array([[False, True], [ True, True], [ True, True]], dtype=bool)
- meshgrid:接受兩個一維數組A、B,生成兩個二維數組
>>> points=np.arange(-5,5,1) >>> points array([-5, -4, -3, -2, -1, 0, 1, 2, 3, 4]) >>> xs,ys=np.meshgrid(points,points) >>> xs array([[-5, -4, -3, -2, -1, 0, 1, 2, 3, 4], [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4], [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4], [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4], [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4], [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4], [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4], [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4], [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4], [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4]]) >>> ys array([[-5, -5, -5, -5, -5, -5, -5, -5, -5, -5], [-4, -4, -4, -4, -4, -4, -4, -4, -4, -4], [-3, -3, -3, -3, -3, -3, -3, -3, -3, -3], [-2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2], [ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], [ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4]])
一維數組A[a1,a2,a3…an],一維數組B[b1,b2,b3…bm],meshgrid生成兩個數組:
- sum:求和
>>> a=np.arange(6).reshape(3,2) >>> a array([[0, 1], [2, 3], [4, 5]]) >>> a.sum() #所有求和 15 >>> a.sum(0) #對列求和 array([6, 9]) >>> a.sum(1) #對行求和 array([1, 5, 9])
- mean:算數平均數,零長度的數組的mean爲nan
>>> a.mean() #所有求平均數 2.5 >>> a.mean(0) #對列求平均數 array([ 2., 3.]) >>> a.mean(1) #對行求平均數 array([ 0.5, 2.5, 4.5])
- max:求最大值
>>> a.max() #所有求最大值 5 >>> a.max(0) #對列求最大值 array([4, 5]) >>> a.max(1) #對行求最大值 array([1, 3, 5])
- min:求最小值
>>> a.min() #所有求最小值 0 >>> a.min(0) #對列求最小值 array([0, 1]) >>> a.min(1) #對行求最小值 array([0, 2, 4])
- argmax,argmin:求最大、最小元素的索引
>>> a.argmax() #索引的是平鋪的數組 5 >>> a.argmax(0) #按列索引 array([2, 2], dtype=int32) >>> a.argmax(1) #按行索引 array([1, 1, 1], dtype=int32) >>> a.argmin() 0 >>> a.argmin(0) array([0, 0], dtype=int32) >>> a.argmin(1) array([0, 0, 0], dtype=int32)
- cumsum:全部元素累計的和
>>> b array([[2, 2], [2, 3], [4, 5]]) >>> b.cumsum() #對所有元素求累計和,原數組有幾個元素返回的數組中就有幾個元素 array([ 2, 4, 6, 9, 13, 18], dtype=int32)
#[2, 2+2, 2+2+2, 2+2+2+3, 2+2+2+3+4, 2+2+2+3+4+5] >>> b.cumsum(0) #對列求累計和 (b.shape(n,m),返回的數組shape(n,m)) array([[ 2, 2], [ 4, 5], [ 8, 10]], dtype=int32) #[2,2],[2+2,2+3],[2+2+4,2+3+5] >>> b.cumsum(1) #對行求累計和 (b.shape(n,m),返回的數組shape(n,m)) array([[2, 4], [2, 5], [4, 9]], dtype=int32) #[2,2+2],[2,2+3],[4,4+5]
- cumprod:全部元素的累計積
>>> b array([[2, 2], [2, 3], [4, 5]]) >>> b.cumprod() #對所有元素求累計積 array([ 2, 4, 8, 24, 96, 480], dtype=int32) #[2, 2*2, 2*2*2, 2*2*2*3, 2*2*2*3*4, 2*2*2*3*4*5] >>> b.cumprod(0) #對列求累計積 array([[ 2, 2], [ 4, 6], [16, 30]], dtype=int32) #[2,2],[2*2,2*3],[2*2*4,2*3*5] >>> b.cumprod(1) #對行求累計積 array([[ 2, 4], [ 2, 6], [ 4, 20]], dtype=int32) #[2,2*2],[2,2*3],[4,4*5]
- std:標準差
>>> b.std() 1.1547005383792515 >>> b.std(0) array([ 0.94280904, 1.24721913]) >>> b.std(1) array([ 0. , 0.5, 0.5]
- var:方差
>>> b.var() 1.3333333333333333 >>> b.var(0) array([ 0.88888889, 1.55555556]) >>> b.var(1) array([ 0. , 0.25, 0.25])
- unique(x):計算x中的惟一元素,並返回有序結果
>>> b array([[2, 2], [2, 3], [4, 5]]) >>> np.unique(b) array([2, 3, 4, 5])
- in1d(x,y):獲得一個表示‘x的元素是否包含y’的布爾型數組
>>> np.in1d(b,c) array([ True, True, True, True, False, False], dtype=bool) # b中元素是否在c中,用b的每個元素,與c的元素逐個比較
- union1d(x,y):計算x、y的並集,並返回有序結果
>>> np.union1d(b,c) array([0, 1, 2, 3, 4, 5])
- intersect1d(x,y):計算x、y中公共元素,並返回有序結果
>>> a
array([[0, 1],
[2, 3],
[4, 5]])
>>> b
array([[0, 1],
[5, 6]])
>>> np.intersect1d(a,b)
array([0, 1, 5])
- setxor1d(x,y):集合的對稱差,即異或
>>> a
array([[0, 1],
[2, 3],
[4, 5]])
>>> b
array([[0, 1],
[5, 6]])
>>> np.setxor1d (a,b)
array([2, 3, 4, 6])
- setdiff1d(x,y):集合的差,即元素在x中但不在y中
>>> a
array([[0, 1],
[2, 3],
[4, 5]])
>>> b
array([[0, 1],
[5, 6]])
>>> np.setdiff1d(a,b)
array([2, 3, 4]
- any:用於測試數組中是否存在一個或多個True
- all:用於測試數組中是否所有爲True
>>> bools=np.array([True,False]) >>> bools.any() True >>> bools.all() False
- diag:以一維數組的形式返回方陣的對角線(或非對角線)元素,或將一維數組轉換爲方陣(非對角線元素爲0)
>>> f=np.arange(9).reshape(3,3) >>> f array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) >>> np.diag(f) #返回方陣f的對角線元素 array([0, 4, 8]) >>> np.diag(f,1) #返回f對角線上移1位的元素 array([1, 5]) >>> np.diag(f,-2) #返回f對角線下移2位的元素 array([6]) >>> g=np.arange(4) >>> g array([0, 1, 2, 3]) >>> np.diag(g) #將一維數組g轉換爲方陣 array([[0, 0, 0, 0], [0, 1, 0, 0], [0, 0, 2, 0], [0, 0, 0, 3]])
- dot:矩陣乘法
>>> k array([[6, 4, 2], [5, 3, 1]]) >>> b array([[2, 2], [2, 3], [4, 5]]) >>> b.dot(k) array([[22, 14, 6], [27, 17, 7], [49, 31, 13]])
- trace:計算對角線元素的和
>>> b=np.arange(9).reshape(3,3) >>> b array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) >>> b.trace () 12
- det:計算矩陣行列式
>>> np.linalg.det(b) 0.0
- inv:計算方陣的逆
>>> c array([[1, 1, 1], [3, 4, 5], [6, 7, 8]]) >>> np.linalg.inv(c) array([[ -4.50359963e+15, -1.50119988e+15, 1.50119988e+15], [ 9.00719925e+15, 3.00239975e+15, -3.00239975e+15], [ -4.50359963e+15, -1.50119988e+15, 1.50119988e+15]])
- rand:產生均勻分佈的樣本值
>>> a=np.random.rand(6) >>> a array([ 0.84127444, 0.5384819 , 0.90085008, 0.07750325, 0.35909086, 0.70885957])
- randint(low,high=None,size=None,dtype) :從給定的上下限範圍隨機取整數
>>> b=np.random.randint(0,9,size=(2,3)) #隨機取值0~9的2行3列數組 >>> b array([[2, 7, 1], [1, 4, 8]]) >>> c=np.random.randint(0,9) #沒有size,默認取一個值 >>> c 8
- randn:產生正態分佈(平均值爲0,標準差爲1)的樣本值
>>> d=np.random.randn(6).reshape(2,3) >>> d array([[-0.01535237, -0.81693929, -0.71081245], [-0.10101115, -0.57806109, 1.48653213]])
- permutation(x) :返回一個序列的隨機排列或返回一個隨機排列的範圍
x:int或array_like
若是 x是一個整數,隨機排列。
若是x是一個數組,隨機複製一個元素。
>>> np.random.permutation(5) #0~5的隨機排序 array([3, 1, 0, 4, 2]) >>> np.random.permutation([1,2,3]) #數組中元素的隨機排序 array([2, 1, 3]) >>> arr=[[1,2,3],[4,5,6]] >>> np.random.permutation(arr) #二維數組中,行的隨機排序 array([[4, 5, 6], [1, 2, 3]])
- seed:隨機數種子
>>> np.random.seed(5); np.random.rand(10) array([ 0.22199317, 0.87073231, 0.20671916, 0.91861091, 0.48841119, 0.61174386, 0.76590786, 0.51841799, 0.2968005 , 0.18772123]) >>> np.random.seed(5); np.random.rand(10) array([ 0.22199317, 0.87073231, 0.20671916, 0.91861091, 0.48841119, 0.61174386, 0.76590786, 0.51841799, 0.2968005 , 0.18772123]) #一樣的代碼,反覆輸入運行,結果相同。