numpy 产生数组
a = np.array(list,) #可以传入列表
array 要求每个数据的数据都是一样的
a.fill()#将a都变成 数字5
a=a.astypr(“float”)#将a变成float格式
生成整数系列:
a=np.arange(1,10,1)
生成1,2,3,4,5,6,7,8,9 步长为1
生成等差序列:
a = np.linspace(1,10,21) 生成 1-10 共21个数字 这些数字为等差序列
生成随机浮点数:
np.rangdom.rand(10)随机浮点数 & np.random.randn(10)随机浮点数 符合正态分布
生成随机整数
np.random.randint(1,10)
数组属性
查看数组中的数据类型
a.dtype
查看形状
a.shape—(21,)一维数组个数
查看数据数目
a.size
查看数组的维数
a.ndim
索引与切片
与列表类似
a(0) 取出第一个元素
a(0)=10 第一个元素赋值 10
a[:-1] a[:] 支持负索引,省略参数索引
array 生成多维数组
a = np.array([1,2,3,4],
[11,12,13,14])
查看shape
a.shape --(2,4)-- 2行4列的数据
查看数组元素个数
a.size
多维数组的索引
a[1,3] 返回第二行 第四列 14
a[1] 返回第二行
a[:,1] 返回第二列 ps: 逗号 之前 行索引 之后 列索引
多维数组的切片
a[0,3:5] 返回第一行 第四,第五行(左闭右开的区间) ps: 逗号 之前 行索引 之后 列索引
[lower,upper,step]
切片是引用 引用机制 切片的赋值会改变原数组中的值
可以使用 .COPY方式解决
花式切片
一维
index=[1,2,-3]
y = a[index] 将索引用list先定义出来
使用布尔数组
mask=np.array([0,0,1,2,0,1,1,1],dtype=bool)
a[mask]
0 则为false 非0则为True
True 则为要取出的数
二维数组
a[行索引,列索引] a[(0,1,2,3),(2,3,4,5)] \ a[3:,[0,2,4]]
三维???
where
a>0 判断数组内函数是否大于0
np.where(a>10) 返回的是 大于0 的索引位置。
利用这点可以取出 符合条件的数组内的数值
a[a>0] 利用bool切片
a[np.where(a>0)] 利用索引位置
数据类型
类型转换
a=np.arrar([1.5,3],dtype=float) 数组要求所有的元素的类型都是一样的,通过 dtype 来转化。
asarray
np.array(a,dtype=float) 将整个数组直接进行转化
astype 会产生一个新的数组,如果赋值给 原数组 会改变原数组。(a=a.astype\a 会发生变化)
a.astype(float)
数组操作
sort 排序 从小到大 深度排序
np.sort(mv_num) ‘mv_num 为要排序的数组 引用机制 不改原来数组’
argsore 返回从小到大的索引位置
order= np.argsort(num) 返回一个数组\
求和 最大值 最小值 均值 标准差 ???相关系数矩阵???\
np.sum(num) num.sum()
np.max(num) num.max()
np.min(num) num.min()
np.mean(num) num.mean()
np.std(num) num.std()
no.cov(num_1,num_2)???
多维数组的操作
数组形状
shape
a.shape=2,3 将a变成一个 2行3列的数组 a.shape 应该返回(2,3)
reshape 不会修改原数组 返回一个新的数组
a.reshape
转置??
????
a.T
a.transpose
只要不赋值 就不会改变原数组
数组的链接
按照一定的顺链接起来
concatenate((a0,a1,a2…aN),axis = 0)
ps: 要连接的数据需要放一个一元组中;需要给定一个轴向;数组的长度必须是一样的(用shape进行判断)
默认沿着第一维进行链接 axis=1?????
z=concatenate((x,y),axis=0)
链接成三维的数组
z=array((x,y))
vstack
np.vstack((x,y)) == axis =0
np.hstack((x,y)) == axis =1
np.dstack((x,y)) == array 三维