两大魔法命令(%run与%timeit)
%run中%表示run命令后面只能由一个操作语句,如有两个操作语句甚至是更多,可以按照语句个数添加相应的%
%run用于对于文件的导入,文件主要是python语言文件
例如:%run machinestudy/hello.py 这个语句就是将hello.py文件导入jupyter notebook 中去,从而进行方法调用。
第二个方法是用于测算时间复杂度的魔法命令%timeit
例如:%%timeit
L=[]
for n in range(1000) L.append(n**2)
上面的语句时创建一个数组(序列),n从1开始进行平方操作,将其得到的数据添加进入所创建的列表中去,进行1000次操作.
例如:%time
L=[i**2 for i in range[1000]]
除了刚才的两个魔法命令,还有一些命令我们还没有学习,但是我们可以利用 %Ismagic?这个命令来查看剩余的魔法命令,
现在,我进入最为重要的numpy总结阶段
代码1 for _in range(10):
print("很好用")
这段代码即为将输出语句打印十次
代码2 data= [i*2 for i in range(100)]
len(data) //测试数据长度
data[:10]//显示前十个元素
data[-1]//显示最后一个元素
其中list.append(x**2)意思是将x平方化,并将数据添加将纳入list列表中去,
代码3 import random
L=[random.random() for i in range(100000)]
L.sort()//进行数据排序操作
numpy array 矩阵操作
numpy._version_//查看numpy的版本
import numpy as py //将numpy易名为np,方便后面调用
代码1 arr=array.array('i',[i fo i in range(1000)])
第一个参数表示设置出创建列表元素的数据类型,第二个元素则进行数据元素的创建
代码2 nparr= np.array([i for i in range(10) ])
nparr.dtype//设置列表类型
nparr.zeros(10)//创建十个全部为0 的数据列表
nparr.zeros(10,dtype=int),第二个属性设置列表元素的属性,
nparr.zeros((3,5))//创建三行五列的数组,可以在后面添加dtype=int ,从而进行数据元素设置,
nparr.ones(10)//创建十个全部之为1 的数组
np.full((3,5),666)//设置三行五列的数组其中元素值全部为666,
等同鱼np.full(shape=(3,5),fill_value=666)
random方法的调用
代码1 np.random.random()//生成一个在0到1之间的数
np.random.random(size=10)//生成十个值在0到1 之间的数
np.random.seed(随机数)//当设置相同的随机数的时候,两次产生的随机数相同
np.random.randint(0,10)//生成一个值在0到10的int类型的数据
np.random.randiint(0,10,10)//生成十个值在0到10的类型的数据
np.random.randint(0,10,size=10)//比较与上面代码的优化
np.random.randint(0,10,size=(3,5))//szie用于设置数据放置形式
np.random.normal()//产生符合均值为0,方差为1的数据
np.random.normal(均值,方差,大小(size))
X.ndim//查看X的维度
当X为二维数组时,访问方法为X[(0,0)]
X[0:5]//输出从0 到5 的所有元素
X[:5]//输出在5位置之前的数据
X[5:]//输出在5 位置之后的元素数据
X[::2]//从头到尾输出数据,但是步长为2
X[::-1]//从尾到头输出数据
X[:2,:3]//输出前两行前三列的数据
X[::-1,::-1]//从尾到头输出,矩阵反转
X[0]=X[0,:]//获取行
X[,:0]//获取列
subx=X[:2,:3].copy()//复制数组
arange与range方法的调用
代码1 range=(0,20,2)//第一个元素是起始点,第二个元素代表是终止点,第三个元素代表是步长
arange(0,20,0.2)。。步长为小数的时候在arange是成立的,但是在range中则会报错,
代码2 linespace(0,20,10)//截断出十个段,第一个与第二元素同上面意思,第三个元素表示截断多少个点。
Reshape方法
x.reshape(2,5)//转换为二行五列的矩阵
x.shape(10,-1)//不知道
矩阵的合并
代码1 np.concatnate({x,y})//进行x与y的合并
当然concatnate中可以有三个元素
np.concatnate(x,y,z)
np.concatnate([A,A],axis=0或者1)//axis代表是使用行或者列来进行矩阵合并,0代表时行,1代表时列
当然两个矩阵大小不一样,可以看一下的代码
代码2 A2 = np.concatnate([A,z.reshape(1,-1)])
垂直叠加数据
代码:np.vstack([A,z])
水平叠加数据
代码:np.hstack([A,z])
矩阵的分割
代码:x1 ,x2 ,x3 = np.split(X,[3,7])//第一个元素时操作对象,第二个元素代表是分割点,还可以有axis属性的添加,进行按列分割或者是按行分割
有叠加相同,np对象有vsplit()与hsplit()两种方法进行分割
在此,我就不一一列举了
代码: upper,lower = np.vsplit(A,[2])
代码:right,left = np.hsplit(A,[2])
矩阵运算(重中之重)
universial function(基本功能)
1.np.abs()//
2. np.sinx()//
3. np.cos()//
4. np.tan()//
5. np.exp()//
6. np.power()//
7. np.log()//
8. np.lg2(x)//
9. np.log10(x)//
矩阵相加
代码:v= np.array([1,2])
v+a=array([1,3],[3,5])
np.vstrack([v]*A,shape[0])//将v的向量落在A家族的第0维度
np.stack([v]*A.shape[0]+A)//将v的向量落在A家族的第0维度,再加上A矩阵
np.title(V,(2,1))//2代表是行堆叠的次数,1代表的是列堆叠的次数