#numpy函数
import numpy as np
a1=np.array([1,2,3,4,5,6])#数组设置
b1=np.zeros(6) #生成6个0
c1=np.ones(6) #生成6个1,默认float类型,在直接数组定义时根据输入值定义字符类型
d1=np.ones(6,dtype='bool') #生成6个bool值1
b1.fill(5) #把b1的值全部用5代替
a3=np.array([1,2,3])
a3.fill(2.5) #return array([2, 2, 2]) ,a3为int型,只会取到2,类型变更使用astype函数
a3=a3.astype('float') #return array([2.5, 2.5, 2.5])
#生成整数序列
a=np.arange(1,10,2) #(1,10),2步长
#生成等差序列
a=np,linspace(1,10,21) #21个值(1,10)
#生成随机数
a=np.random.rand(10) #(0,1)生成10个数
a=np.random.randn(10) #生成服从正态分布的10个数,均值0,sigerma=1
a=np.random.randint(1,10,10) #(1,10)直接10个随机整数int
#查看数据类型
type(a) #return numpy.adarray
#查看形状
a.shape
#查看数目
a.size
#查看数组维度
a.ndim
#索引和切片
#类似python的索引切片
ob=np.array([21000,21800,22240,23450,25000])
ob2=ob[1:]-ob[:-1] #输出明天减去今天的累计票房得到每天的票房收入
#多维数组
a=np.array([[1,2,3,4],[10,11,12,13]])#二维数组
a[1,3] #return 13
a[:,3] #array([ 4, 13])
a[2:5:2,::2] #取出3,5行的奇数列
a=np.array([0,1,2,3])
b=a[2:4]
b #return [2,3]
b[0]=10
a #return [10,1,2,3] a的值因为b的切片修改了
"""
array切片在内存中使用的是引用机制(list没有),python并没有为b分配新的空间存储值,b指向了a所分配的内存空间,改变b会同时改变a,如不想改变a,可使用copy(),会申请新内存
"""
b=a[2:4].copy()
#切片只能支持连续或者等间隔的切片操作,要想实现任意位置的操作,需要使用花式索引fancy slicing.
#一维花式索引
a=np.array(0,100,10)
index=[1,2,-3]
y=a[index]
y #[10,20,70]
#bool数组花式索引
mask=np.array([0,1,1,0,1,1,1,1,1,1],dtype=bool)
a[mask] #True的值会输出,array([0,30])
a[(0,1,2,3,4),(0,1,2,3,4)] #对角线5个值
#不完全索引
con=np.array([0,1,1,0,1,0],dtype=bool)
a[con]#取得第0,3,-1行的值
#where 语句
a=np.array([0,12,5,20])
np.where(a>10) #return (array([1,3]),dtype=int64,) 第1,3索引的符合>0
a[a>0] #返回>0的array
#类型转换
a=np.array([1.5,-3],dtype=float)
#asarray函数
np.assarray(a,dtype=float) #跟前面的astype方法差不多,都是用来调整数组的类型
b=a.astype(float) #这里其实astype会返回一个新数组给b,对b的修改不会作用在a上也就是前面的引用机
制不在这里成立
#数组排序
#sort函数
np.sort(a) #对数组从小到大排序
#argsort函数
np.argsort(a) #返回从小到大数组元素值对应的位置索引
#sum函数 求和
np.sum(a)
a.sum() #下面这些函数都可以使用这种写法
#max函数 max值
np.max(a)
#min函数 min值
np.min(a)
#mean函数 均值
np.mean(a)
#std函数 标准差
np.std(a)
#cov函数 相关系数矩阵
np.cov(a,b) #返回2个数组的相关系数矩阵-有个计算公式的
#多维数组操作
#数组形状
a=np.arange(6) #return array([0,1,2,3,4,5])
a.shape=2,3 #return array([[0,1,2],[3,4,5]]) 修改成2行3列
a=a.reshape(2,3) #效果同上
#转置
a.T #直接行成列,列成行,得到的结果与reshape(3,2)是不同的
a.transpose() #效果和a.T一样
#数组连接
#将不同的数组按一定的顺序连接起来
np.concatenate((a0,a1,....,aN),axis=0) #默认axis=0,表示在行上连接2个(2,3)得到(4,3),只#能连接2维
"""
import numpy as np
a=np.array([[1,2],[3,4]])
b=np.array([[5,6],[7,8]])
c=np.concatenate((a,b))
print(c)
"""
#用于数组1,2,3维连接的numpy函数
# vstack函数 1维 行
np.vstack(x,y)
# hstack函数 2维 列
np.hstack(x,y)
# dstack函数 3维
np.dstack(x,y)
#numpy内置函数
np.abs(a) #绝对值
np.exp(a) #指数值
np.median(a) #均值
np.cumsum(a) #对每个位置前面的值求和
import numpy as np
a=np.array([[1,2],[3,4]])
b=np.array([[5,6],[7,8]])
c=np.concatenate((a,b))
print(c)