python——numpy包的一些功能笔记

来源:互联网 发布:jquery ajax json解析 编辑:程序博客网 时间:2024/06/04 20:15

numpy

基本功能

#data皆为数组data.shape data.dtypenp.array(data1) #list转arraydata.ndim #维数np.zeros(10)np.zeros((3,6))np.empty((2,3,2)) #返回未初始化的垃圾值np.arange(15)np.array([1,2,3],dtype=np.float64)data.astype(np.float64)

索引功能

data[5:8] #索引data[5:8].copy() #因为改变值会反应到原数组data[0][2]data[0,2] #这两个等价data[0]=42 #所有的检索为0的都变成42data[:,:1]data = randn(7,4) #numpy.random中的randn函数,生成标准正态分布的随机数据data == "bob" #返回所有布尔值数组data1[data == "bob"] #索引true的值,布尔型数组的长度必须跟被索引的轴长度一致data1[data == "bob", 2:]data1[data != "bob"] data1[-(data == "bob")] #这两个等价data[data<0] = 0data1[data != "joe"] = 7data=np.arange(32).reshape((8,4))data[[1,5,7,2],[0,3,1,2]] #索引出4个数data[[1,5,7,2]][:,[0,3,1,2]] #后一个框为 按顺序列出所有data[np.ix_([1,5,7,2],[0,3,1,2])] #用`np.ix_`是选取方形区域的索引器

数组转置和轴对换

data.T #转置np.dot(data.T,data) #矩阵内积data.transpose((1,0,2)) #原来shape索引是[0][1][2],现在是[1][0][2]data.swapaxes(1,2) #1和2索引对换

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

np.aqrt(data)np.exp(data)np.maximum(data1,data2)data=randn(7)*5 ; np.modf(data) #返回两个数组,分别为小数和整数部分

将条件逻辑表述为数组运算

#xarr,yarr都是数组,cond是布尔值result=[(x if c else y) for x,y,z in zip(xarr,yarr,cond)] #当cond为true时,选取xarr的值,否则从yarr中选取 ,输出为listnp.where(cond,xarr,yarr) #返回数组np.where(arr<0,2,-2)np.where(arr<0,2,arr)

数学和统计方法

data.mean()data.sum()data.mean(axis=1) #求每行的均值data.sum(0) #求纵轴的和data.cumsum(0) #行累计求和data.cumprod(1) #列类似相乘(data>0).sum() #正值的数量bools.any() #布尔数组是否存在一个或多个truebools.all() #布尔数组是否都是truedata.sort() #排序data.sort(1) #行内排序data[int(0.05*len(data))] #5%分位数

唯一化以及其他的集合逻辑

np.unique(data) #返回唯一值的数组 并且返回已排序的结果np.in1d(data,[2,3,6]) #返回len(data)个布尔值数组,data是否有2,3,6

数组的文件输入输出

np.save("some_array.npy",data)np.load("some_array.npy")np.savez("array_archive.npz",a=data1,b=data2) #用于保存多个数组np.load("array_archive.npz"); arch["b"]#存取文本文件!cat array_ex.txt #查看txtarr=np.loadtxt("array_ex.txt",delimiter=",") #导入时用逗号分隔

线性代数

x.dot(y)np.dot(x,y) #上两行相同qr.(data) #计算qr分解inv(data) #计算矩阵的逆

随机数的生成

np.random.normal(size=(4,4))%timeit #之后加脚本可以算运行时间data.argmax() #返回最大值的索引
原创粉丝点击