numpy常用功能

365彩票app下载不了 2025-08-24 02:11:02 作者: admin 阅读: 2287
numpy常用功能

官方函数功能查找网址:https://docs.scipy.org/doc/numpy/reference/

一.numpy常用功能速查

内容转载自:https://zhuanlan.zhihu.com/p/27334246

1.创建ndarray对象

np.array([[1,2,3],[3,4,5]],dtype=float64):将输入数据(列表、元组、数组等)转换为ndarray。如果不指定dtype,会自动推断np.asarray((1,2,3)) #将输入装换为ndarraynp.arange(10,25,5)#类似内置的range,返回ndarraynp.ones((2,2),dtype=np.int32),np.ones_like(arr) #根据指定的形状和dtype创建全1数组。ones_like以另一个数组作为形状参数np.zeros((2,2),dtype=np.int32),np.zeros_like(arr)#同上,返回的元素都为0np.empty((2,2),dtype=np.float),np.empty_like(arr)#同上,返回的元素是未初始化的垃圾值np.eye(2),np.identity(3)#创建一个N*N的单位矩阵(对角线为1,其余为0)np.linspace(0,2,9)#创建等差数列,[0,2]中取9个数

2.索引和切片

arr[2],arr[0][2]#基础索引A=a1*a2*...*an,an-1代表行,an代表列,A[0]代表从a1这个维度切片arr[1,:2],arr[1:2,:2]#切片索引,注意两者的差别,前者的结果是一维数组,后者是二维的arr[arr>0],arr[arr[:,1]==0,:]#布尔型索引,注意布尔型数组的形状/长度必须与被索引的数组形状/轴长度一致arr[[1,2,3],[2,1,0]]#花式索引,选出3个元素组成的一维数组,(1,2),(2,1),(3,0)arr[[1,5,7,2]][:,[0,3,1,2]],arr[:,[0,3,1,2]][[1,5,7,2]] #两个花式索引的先后顺序可变,不影响结果总结一下:基本索引/切片、布尔索引、一级花式索引(仅传入一组数组)都是引用视图,,但是,花式索引中一次传入多个索引数组则会创建副本

3.数组的维度和形状变化

arr.reshape((2,3))#更改数组的形状,数组中元素的顺序不变arr.T,arr.transpose((1, 0, 2))#简单转置和高级转置,用元组表示转换位置的轴,都会创建副本arr.swapaxes(1,2)#另一种转换轴位置的方法,生成的是视图所有的转置都会导致数据中元素顺序的变化

4.通用函数:快速的元素级数组函数

一元ufuncnp.abs(arr),np.fabs(arr)#计算整数、浮点数或复数元素的绝对值sqrt,square#计算数组中各元素的平方根、平方exp,log#计算各元素的指数e的x次方及自然对数log10,log2,log1p#分别是底数为10的log,底数为2的log,以及log(1+x)np.sign(arr)#计算各元素的正负号ceil,floor,rint#分别是大于等于该值的最小整数,小于等于该值的最大整数,四舍五入后最接近的整数modf#将数组的小数和整数部分以两个独立数组返回,,返回多个数组哦~isnan,isfinite,isinf#分别返回"哪些是NaN"“哪些是有穷的”“那些是无穷的”的布尔型数组cos,cosh,sin,sinh,tan,tanh,arcos,arcosh等三角反三角函数np.logical_not(arr)#相当于-arr,一般用于布尔型数组二元ufuncnp.add(arr,brr),arr+brr#两个元素或数组相加np.subtract(arr,brr),arr-brr#两个元素或数组相减np.divide(arr,brr),arr/brr#两个元素或数组相除np.multiply(arr,brr),arr*brr#两个元素或数组相除np.floor_divide(arr,brr),np.mod(arr,brr) #向下圆整除法(丢弃余数)和求模计算(除法的余数)np.power(arr,brr),arr**brr#乘方,既能是数组也能是元素,同上maximum,fmax#元素级的最大值计算,fmax将忽略NaNminimum,fmin#最小值计算,同上copysign#将第二个数组中值的符号复制给第一个数组中的值greater,greater_equal,less,less_equal,equal,not_equal#相当于中缀运算符>,>=,<,<=,=,!=,产生布尔型数组logical_and,logical_or,logical_xor#执行元素级的真值逻辑运算,相当于&,|,^

5.基本的数组统计方法(一般会有聚合效果)

np.sum(arr),arr.sum(),np.sum(arr,axis),arr.sum(axis)#对数组中全部或某轴向的元素求和mean,std,var#分别代表平均值、标准差和方差(自由度可调默认为n),使用方法同上min,max,argmin,argmax#最小值最大值,最小元素和最大元素(第一个)的索引,使用方法同上cumsum,cumprod#所有元素的累加与累积,不发生聚合以上的统计方法,在使用轴参数时,都是计算该轴上各元素的统计值,比如axis=1即在列上计算每行对应数据的统计值

6.其它特殊函数

where(cond,arr,brr)#cond是条件数组,arrbrr可以是数组或是数值,还可以多重嵌套arr.sort(axis)#数组多维时,默认在axis=0上排序。返回数组的已排序副本,就地排序则会修改原数据

7.数组的集合运算

np.unique(arr)#找出数组中的唯一值并返回有序结果intersect1d(arr,brr),union1d(arr,brr)#分别计算交集和并集,并返回有序结果in1d(arr,brr)#得到一个表示"arr的元素是否包含于brr"的布尔型数组,size与arr相同setdiff1d(x,y),setxor1d(x,y)#集合的差和对称差

8.存取数据I/O(文本或二进制文件)

np.load('some_array.npy') #读取二进制文件记得带上后缀n(女)p(朋)y(友)np.save('some_array.npy',arr) #存在当前路径下,二进制格式np.savez('array.npz',arr,brr)#存储多个数组到一个压缩文件np.load('array.npz')['arr']#读取压缩文件并选取其中一个数组np.loadtxt('array.txt',delimiter=','),np.savetxt('array.txt',delimiter=',')#存取文本文件,delimiter表示分隔符号

9.Numpy的数据类型

10.线性代数计算函数

np.dot(x,y),x.dot(y)#矩阵乘法det#计算矩阵行列式arr,brr=qr(crr)#计算QR分解solve#解线性方程组Ax=b,其中A为方阵

11.随机数模块random

np.random.seed(123456)#确定随机数生成器的种子数量np.random.rand(d1,d2,,dn)#元素是(0,1)之间的随机数,均匀分布np.random.randn(d0, d1, ...,dn)# 返回一个标准正态分布(平均值为0,标准差为1)randint(a,b,(d1,d2,,,dn))#给定上下限范围随机选取整数,[a,b)np.random.choice(arr,size,replace,p)#arr可以是一维数组或整数,size指结果数组大小,replace=False指结果数据不重复,p指原始数据选取概率的列表。举两个例子np.random.choice(5,4,replace=False,p=[0.1,0.1,0,0,0.8])与np.random.choice(arr,brr)permutation#返回一个随机排列,参数可以是整数或数组np.random.normal(loc,scale,size)#返回正态分布,loc是均值,scale是标准差,size是数组大小binomial(n,p,size)#二项分布,独立事件发生概率为p,n次伯努利实验后成功发生的次数uniform(low, high, size)#均匀分布,[low,high)np.random.chisquare(df,size)#卡方分布,前面是自由度,后面是size

二、np.random.seed()

功能解释:https://blog.csdn.net/linzch3/article/details/58220569

seed( ) 用于指定随机数生成时所用算法开始的整数值,如果使用相同的seed( )值,则每次生成的随即数都相同,如果不设置这个值,则系统根据时间来自己选择这个值,此时每次生成的随机数因时间差异而不同。

三、两个数组合并或拼接

内容转载自:https://blog.csdn.net/hustqb/article/details/78090365

Python中numpy数组的合并有很多方法,如

np.append()np.concatenate()np.stack()np.hstack()np.vstack()np.dstack()

其中最泛用的是第一个和第二个。第一个可读性好,比较灵活,但是占内存大。第二个则没有内存占用大的问题。

方法一——append

parametersintroductionarr待合并的数组的复制(特别主页是复制,所以要多耗费很多内存)values用来合并到上述数组复制的值。如果指定了下面的参数axis的话,则这些值必须和arr的shape一致(shape[axis]之外都相等),否则的话,则没有要求。axis要合并的轴

例程:

方法二——concatenate

parametersintroduction*arrays这些数组除了在待合并的axis(默认为axis=0)上之外,必须具有相同的shapeaxis待合并的轴,默认为0

例程:

相关推荐