一、创建数组
1、创建数组的函数
- 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的数组,它返回的是一些未初始化的垃圾值。
>>> 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了。
>>> 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.]])
2、Numpy的数据类型
3、 查看数组维度、数组形状、数据类型
>>> 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')
二、索引、切片
- 利用行列号索引、切片
>>> 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、2、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)
三、数组和标量间的运算
大小相等的数组间的算术运算会应用到元素级。
>>> 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]])
四、数组转置和轴对换
- 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]]])
五、函数
- 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、log10、log2、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]) #同样的代码,反复输入运行,结果相同。