Numpy
- 首先要安装numpy,这里我们下载了anaconda,便于调用,创建一个二维数组,类型为float
import numpy as np
#array(object, dtype=None, *, copy=True, order='K', subok=False, ndmin=0,like=None)
array=np.array([[1,2,3],[1,1,2]],dtype=float)
print('原数组:',array)
print('维数:{}\n形状:{}\n元素个数:{}\n类型:{}\n'.format(array.ndim,array.shape,array.size,array.dtype))
array_lis=array.tolist()
print('原数组转成列表',array_lis)
- 生成空数组,每个元素趋近于0
np.empty((3,4))
- 生成零数组,每个元素为0
np.zeros((3,4))
- 生成元素为1的数组
np.ones((3,4))
- 用np.arange()生成数组
#arange([start,] stop[, step,], dtype=None, *, like=None)start可以不填,stop取不到,
#取前一个数就停止,step为步长
np.arange(1,9,2)
- np.linspace()可以指定范围生成指定个数的数组
#np.linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None,axis=0,)
#默认生成50个数,endpoint表示是不是取右闭区间,retstep表示是否显示步长
np.linspace(1,9,10)
- 数组的浅拷贝与深拷贝
c=np.array(np.arange(1,10)).reshape(3,3)
# c_1=c[0]#这是浅拷贝,修改后,原数组也会改
c_1=c[0].copy()#深拷贝,修改后,不会改变原数组
c_1[2]=111
print('子数组:\n',c_1)
print('\n原数组:\n',c)
- 对数组进行高级索引切片
c[[0,1,2],[0,1,1]]#对上面的c数组取出元素1,5,8,[]一个索引对一个
- 矩阵运算(加减乘)
#如果用列表,则需要循环相加,比较麻烦且耗时
a=np.array([1,2,3,4]).reshape(2,2)
b=np.arange(4).reshape(2,2)
c=a+b
d=a-b
e=a*b#对应数相乘
print('a:{},b:{},+:{},-:{},*{}'.format(a,b,c,d,e))
print(np.dot(a,b))#矩阵乘法
- 对 numpy 进行三角函数运算和对 axis 维度的理解
理解:若axis=i ,则 numpy 沿着第 i 个下标变化的方向进行操作
例如 axis=0,意味着沿行跨列进行数据操作,反之亦然。
import math
print('sin90的值:',np.sin(math.pi/2))#1.0
random1=np.random.rand(2,4)
print('生成两行四列的0-1随机数:\n{}'.format(random1))
print('对每列求和:\n{}'.format(np.sum(random1,axis=0)))#沿着 行(rows) 的方向跨 列
print('对每行求和:\n{}'.format(np.sum(random1,axis=1)))#沿着 列(cols) 的方向跨 行
print('求所有数的最小值:\n{}'.format(np.min(random1)))
print('求所有数的最大值:\n{}'.format(np.max(random1)))
- 一些基本操作
A=np.arange(2,14).reshape(3,4)
print(A)
print(np.argmin(A))#返回最小值的索引
print(np.argmax(A))#返回最大值的索引
print(np.mean(A))#平均值
print(np.average(A))#平均值
print(np.median(A))#中位数
print(np.cumsum(A))#类似前n项和
print(np.diff(A))#每两个做差
B=np.arange(9).reshape(3,3)
print(B)
print(np.nonzero(B))#返回非零数的索引
print(np.transpose(B))#转置
C=np.array([[1,3,2],[9,8,7],[5,3,4]])
print(np.sort(C))#对每行排序,这里axis默认为1
aa=np.arange(12).reshape(3,4)
print(aa)
print(np.split(aa,2,axis=1))#等量分割
print(np.array_split(aa,3,axis=1))#不等量分割
其他文章: