Numpy的基本使用方法

本文用于学习Python工具包Numpy的基本使用方法!!!

import numpy as np
#from numpy import *

#将数据存储到txt文件中
arr=np.arange(3)
np.savetxt("array.txt",arr)
#以矩阵或数组的形式读取txt文件中的数据
arr=np.loadtxt('array.txt')
print(arr)

#arange函数创建0-n的整数的数组,接受1、2、3个参数类似于range()
print( np.arange(1,5,2) )

#将列表数组化
print( np.array([0,1,2,3,4]) )

#创建三维数组,可类似Execel中sheet和行列的关系
print( np.arange(24).reshape(2,3,4) )

#获取数组中的数据类型,数组元素的个数, 获取数组的维度
arr = np.array([np.arange(6),np.arange(6)])
print( arr.dtype )
print( arr.size )
print( arr.shape )

#自定义异构数据类型的数组,自定义数组各元素的数据类型
np.dtype([('name',np.str_,40),('age',np.int32),('weight',np.float32)])
print( np.array([('liyu',23,68.1)]) )

#一维数组的切片操作,从下标0-5,步长为2选取元素,负数下标翻转数组
arr = np.arange(6)
print( arr[:5:2] )
print( arr[::-1] )
#多维数组的切片操作,选取第一个sheet中的所有行列
arr = np.arange(24).reshape(2,3,4)
print( arr[0,::] )
print( arr[0,...] )

#用ravel函数或flatten函数展平多维数组
arr = np.arange(9).reshape(3,3)
print( arr.ravel() )
print( arr.flatten() )

#多维数组的转置 4x3x2
print( arr.transpose() )
print( arr.T )

#数组的水平组合,垂直组合,深度组合(3,3)->(3,3,2)
print( np.hstack((arr,arr)) )
print( np.c_[arr,arr] )
print( np.concatenate((arr,arr),axis=1) )

print( np.vstack((arr,arr)) )
print( np.concatenate((arr,arr),axis=0) )

print( np.dstack((arr,arr)) )

#数组的水平分割,垂直分割,深度分割
print( np.hsplit(arr,3) )
print( np.split(arr,3,axis=1) )

print( np.vsplit(arr,3) )
print( np.split(arr,3,axis=0) )

#NumPy数组转化为Python列表
print( arr.tolist() )

#数组加权求平均,每个元素有对应的权值
arr = np.arange(3)
print( np.average(arr) )
print( np.average(arr,weights=arr) )

#算术平均、最大值、最小值、
print( np.mean(arr) )
print( arr.mean() )
print( np.max(arr) )
print( np.min(arr) )

#极差、中位数、方差、协方差、对数、
print( np.ptp(arr) )
print( np.median(arr) )
print( np.var(arr) )
print( np.mean((arr-arr.mean())**2) )
print( np.cov(arr,arr) )
print( np.log(arr) )

#从小到大排序、相邻元素的差值、平方根、指数、阶乘、sign函数
print( np.msort(arr) )
print( np.diff(arr) )
print( np.sqrt(arr) )
print( np.exp(arr) )
print( arr.cumprod() )
print( np.sign(arr) )

#where函数返回向量中大于阈值的索引,take函数提取对应的元素
for i in range(len(arr)):
    indices=np.where(arr>0)
    np.take(arr,indices)
for i,j in enumerate(arr):
    if i>0:
        print(j)
print( indices )
print( np.take(arr,0) )

#linspace函数,返回在指定范围内均匀分布的数组
print( np.linspace(0,1,5) )

#argmax函数返回数组中最大值对应的下标,最小值
print( np.argmax(arr) )
print( np.argmin(arr) )

#extract函数基于生成的条件从数组中抽取元素
condition=(arr%2)==0
print( np.extract(condition,arr) )

#抽取数组中的非零元素
print( np.nonzero(arr) )

#归一化处理
print( arr/arr.sum() )



#创建单位矩阵、零矩阵、1矩阵
print( np.eye(3) )
print( np.zeros(3) )
print( np.ones(3) )

#创建矩阵,元素之间空格隔开,行之间分号隔开
Mat=np.mat('1 2 3;4 5 6;7 8 9')
print( type(Mat) )

#查看矩阵对角线元素,计算迹,计算相关系数
print( Mat.diagonal() )
print( Mat.trace() )
print( np.corrcoef(Mat,Mat) )

#转置矩阵,逆矩阵,复合矩阵,创建和Mat一样的零矩阵
print( Mat.T )

print( Mat.I )
print( np.linalg.inv(Mat) )

print( np.bmat('Mat Mat;Mat Mat') )
print( np.zeros_like(Mat) )

#列求和,存储中间运算的结果
print( np.add.reduce(Mat) )
print( np.add.accumulate(Mat) )

#除法运算,除法只保留整数,除法保留小数
print( np.divide(Mat,Mat) )
print( np.true_divide(Mat,Mat) )

#模运算,remainder函数 mode函数 % 等价,fmod函数使余数的正负由被除数决定
print( np.remainder(Mat,Mat) )
print( np.fmod(Mat,2) )#第二个参数为除数

#位运算,xor不等运算符,与运算符
print( -Mat )

print( Mat^Mat )
print( np.less(np.bitwise_xor(Mat,Mat),0) )

print( (Mat&Mat)==0 )
print( np.equal(np.bitwise_and(Mat,Mat),0) )

#np.random模块产生随机数的数组
print( np.random.random(5) )
print( np.random.randint(5,size=5) )

#获得[0,1)区间内的随机数,返回2行4列的数组
print( np.random.rand(2,4) )

#np.linalg模块的函数,求解线性方程组
A=Mat
b=np.ones(Mat.shape[0])
x=np.linalg.solve(A,b)
print( x )
print( np.dot(A,x) )

#求解特征值和特征向量,以元组的形式返回
eigenvalues,eigenvectors=np.linalg.eig(A)

#求解奇异值分解
U,Sigma,V=np.linalg.svd(A,full_matrices=False)
print( U*np.diag(Sigma)*V )

#求解广义逆矩阵
print( np.linalg.pinv(A) )

#行列式
print( np.linalg.det(A) )

参考资料:

1.《Numpy学习指南》


猜你喜欢

转载自blog.csdn.net/attitude_yu/article/details/80100726