numpy 常用函数按功能归纳:
一、创建数据
1、创建数组:
(1)array:np.array
import numpy as np
np.array([[1,2,3],[2,3,4]])
a=([1,2,3],[3,2,1])
np.array(a)
np.array(list('abcsafdfasfdasdfg'))
生成指定元素类型的数组:设置dtype属性:
X=numpy.array([1,2,3,4],dtype=numpy.int64)
X=numpy.array([1,2,3,4],dtype=numpy.float64)
使用astype复制数组,并转换类型
X=numpy.array([1,2.6,3],dtype=numpy.float64)
Y=x.astype(numpy.int32)
将字符串元素转换为数值元素
X=numpy.array([‘1’,’2’,’3’],dtype=numpy.dstring_)
Y=x.astype(numpy.int32)
使用其他数组中的数据类型作为参数
X=numpy.array([1,2,3.4].dtype=numpy.float32)
Y=numpy.arange(3,dtype=numpy.int32)
Y.astype(x.dtype)
Ndarray的矢量化计算
X=numpy.array([1,2,3])
X*2
X>2
Y=numpy.array([3,4,5])
X+Y
X>Y
(2)zeros:np.zeros, ones:np.ones
A=np.zeros(3) #一行三列
B=np.zeros((3,4))
C=np.zeros_like(B) #按照B的shape创建数组。
打印数组元素类型
print(‘数组类型:’,type(B))
print(‘数组元素类型:’,B.dtype)
print(‘数组形状:’,B.shape)
(3)empty和empty_like:创建空数组,空数据中的值并不为0,而是未初始化的随机值
a=np.empty(5)
b=np.empty((3,4))
c=np.empty_like(b)
(3)arange :起始值,终值,步长(用法与range类似)。
data=np.arange(1,41,2)
data.reshape((4,5)) #将其形状改变为(4,5)分4部分,每份5个
(4)linspace :指定起始值、终值和元素个数创建一维数组(等差数列)。
np.linspace(0,20,100)
(5)logspace:指定起始值、终值和元素个数创建一维数组(等比数列)
np.logsapce(1,2,20)
(6)eye(I):创建对角矩阵数组(对角线为1,其余为0)
np.eye(2) #二阶方阵
np.eye(3,4) #矩阵
(7)frombuffer,fromstring,fromfile等函数可以从字节序列创建数组
s='abcdefg'
np.fromstring(s,dtype=numpy.int8)
(8)fromfunction函数的第一个参数计算的每个数组元素的函数,第二个参数为数组的大小(shape)
def func2(i,j):
return(i+1)*(j+1)
np.fromfunction(func2,(9,9))
2、查看数组:
dim, dtype, shape
3、数组的索引和切片(切片为视图非复制;复制.copy())
一维数组的索引:与python的列表索引功能相似
(1)多维数组的索引:
arr[r1:r2,c1:c2]
arr[1,1]等价于arr[1][1]
[:]代表某个维度的数据
x=numpy.array([[1,2,3],[2,3,4],[3,4,5]])
x[0] #[1,2,3]
x[0][1] #2
x[0,1] #同x[0][1]
x=numpy.array([[[1,2],[2,3]],[[5,6],[7,8]]])
x[0] #[[1,2],[3,4]]
y=x[0].copy()
z=x[0] #未生成一个副本,是视图
y[0,0] #1
y[0,0]=0
y #[[0,2],[3,4]]
z[0,0]=-1
x[0] #[[-1,2],[3,4]]
z #[[-1,2],[3,4]]
(2)ndarray的切片
x=numpy.array([1,2,3,4,5])
x[1:3] #[2,3] 右边开区间]
x[:3] #[1,2,3] 左边默认为0
x[1:] #[2,3,4,5]
x[0:4:2] #[1,3] 下标递增2
x =numpy.array([[1,2],[3,4],[5,6]])
printx[:2] # [[1 2],[3 4]]
printx[:2,:1] # [[1],[3]]
x[:2,:1]=0 #用标量赋值
print(x) #[[0,2],[0,4],[5,6]]
x[:2,:1]=[[8],[6]] #用数组赋值
(2)narray数组的布尔索引:使用布尔数组作为索引。
arr[condition],condition为一个条件/多个条件组成的布尔数组。
x=numpy.array([3,2,3,1,3,0])
y=numpy.array([True,False,True,False,True,False])
x[y] #[3,3,3]
x[y==False] #[2,1,0]
x>=3 #[True False True False True False]
x[~(x>3)] #[2,1,0]
(x==2)|(x==1) #[False True False True Flase Flase]
x[(x==2)|(x==1)] #[2,1]
x[(x==2)|(x==1)]=0
printx #[3 0 3 0 3 0]
(3)花式索引:使用整型数组作为索引
x=numpy.array([1,2,3,4,5,6])
x[[0,1,2]] #[1,2,3] 相当于列表中的索引
x[[-1,-2,-3]] #[6,5,4] 相当于列表中的索引
x=numpy.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
x[[0,2]] # [[1,2,3,4],[ 9,10,11,12]] 相当于列表中的索引
x[[0,2],[0,2]]#[1,12] 相当于x[0][0]=1,x[2][2]=12
x[[0,2]][:,[0,3]] #[[0,2]]先取x的第一个和第二个元素: [[1,2,3,4],[ 9,10,11,12]],[:,[0,1]]取所有行的,第一列和第三列元素:[[1,3],[9,11]]
numpy.ix()函数,提取
numpy.ix([0,1],[0,1])#取【第一行,第二行】,【第一列,第二列】 :[[1,2,3,4],[5,6,7,8]]
x[[0,1],[0,1]]=[0,0]
x #[[0,2,3,4],[5,0,7,8],[9,10,11,12]]
(4)ndarray数组的转置和轴对换、
数组的转置/轴对换只会返回源数据的一个视图,不会对源数据进行修改
k=numpy.arange(9)
m=k.reshape((3,3))#改变数组的shape复制生成2维,每个维度长度为3的数组。
计算矩阵的内积xTx
numpy.dot(m,m.T) #numpy.dot 点乘
高维数组的轴对象
k=numpy.arange(8).reshape(2,2,2) #[[[0 1],[2 3]],[[4 5],[6 7]]]
k[1][0][0] #[4]
轴变换transpose参数:由轴编号组成的元组(三维数组不好理解,直接百度看图解)
m=k.transpose((1,0,2)) #m[y][x][z]=k[x][y][z]
4、ndarray通用函数
通用函数(ufunc)是一种对ndarray中的数据执行元素级运算的函数
常用的计算函数:
abs(计算绝对值),fads
sqrt(平方根),square(平方的),exp(指数函数),log,log*,loglp
sign,ceiling,floor,modf
isnan(Not a Number),isfinite,isinf
cos,sin,tan,arccos,arcsin,arctan
add(加),substract(减),multiply,divide,power
maximum,minimum,mod,copysign
greater,greater_equal(大于等于),less,less_equal
5、产生数组
np.meshgrid
np.linspace(start,end,Number)
np.arange(start,end,step)
6、逻辑操作
np.where(逻辑表达式,a,b)#表达式为真返回a,为假返回b)
7、统计
sum,mean,std,var
min,max,argmin(返回最大值,对应的是下标),argmax
cumsum(累积和),cumprod(累积的乘积)
8、排序相关
sort(axis)
unique()
9、随机数生成
numpy.random
简单的随机数据
rand(d0,d1,...,dn) #均匀分布的数
randn(d0,d1,...,dn) #标准正态分布
sigma*np.random.randn(...)+mu
randint(low[,high,size])
random_integers(low[,high,size])
choice(a[,size,replace,p])
10、排列
shuffle(x)
permutation(x)
11、分布:
normal([loc,scale,size]) 正态(高斯)分布
beta(a,b[,size]) 贝塔分布样本,在[0,1]内
binomial(n,p[,size]) 二项分布的样本
chisquare(df[,size]) 卡方分布样本
lognormal([mean,sigma,size]) 对数正态分布
exponential([scale,size]) 指数分布
f(dfnum,dfden[,size]) F分布样本
multivariate_normal(mean,cov[,size]) 多元正太分布