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)) #将输入装换为ndarray
  • np.arange(10,25,5)#类似内置的range,返回ndarray
  • np.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)#同上,返回的元素都为0
  • np.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.通用函数:快速的元素级数组函数

  • 一元ufunc
  • np.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,一般用于布尔型数组
  • 二元ufunc
  • np.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将忽略NaN
  • minimum,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

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

例程:
这里写图片描述

方法二——concatenate

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

例程:
这里写图片描述

 

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值