Theano 学习笔记
来源:互联网 发布:小米手机数据迁移 编辑:程序博客网 时间:2024/04/29 16:44
Theano 学习笔记—— Numpy入门50题
1: 引入numpy包,并命名为np
import numpy as np
2: 输出numpy版本以及配置
print np.__version__np.__config__.show()
3: 创建一个长度为10的数组
z=np.zeros(10)print z
4: 从命令行执行,获取numpy的add函数的文档信息
python -c "import numpy;numpy.info(numpy.add)"
5:创建一个长度为10的数组,第4个为1
Z=np.zeros(10)Z[4]=1print Z
6: 创建数组,数组值的范围为10-49
Z=np.arange(10,50)print Z
7: 翻转数组
Z_before=np.arange(10)Z_later=Z_before[::-1]print "翻转前:",Z_beforeprint "翻转后:",Z_later#说明:numpy 数组的使用方法:Z_before[start_index:end_index:step_length]
8: 创建3*3数组,数据范围为0-8
Z=np.arange(9).reshape(3,3)print Z
9: 找出数组中非0元素的下标[1,2,0,0,4,0]
z=np.nonzero([1,2,0,0,4,0])print z
10:创建3*3*3的随机数组
z=np.random.random((3,3,3,))print z
11:创建10*10的数组,并找出最大值和最小值
z=np.random.random((10,10))z_max,z_min=z.max(),z.min()print z_max,z_min
12:创建长度为30的随机数组,求其平均值
z=np.random.random(30)print z.mean()
13:创建5*5的数组,1234刚好在对角线的下方
z=np.diag(1+np.arange(4),k=-1)print z#diag的用法,第一个参数为数组,如果是1维度,则转换成2维度,数组作为对角线上的值#如果是二维,则返回对角元素#第二个参数,用来表示偏移
14:创建8*8的checkboard(0 1 相间)
z=np.zeros((8,8),dtype=int)z[1::2,0::2]=1z[0::2,1::2]=1print z
15:使用tile函数完成checkboard的创建
z=np.tile(np.array([[0,1],[1,0]]),(4,4))print z#tile 重复
16:对5*5的数组归一化0-1归一化
z=np.random.random((5,5))z_max,z_min=z.max(),z.min()z=(z-z_min)/(z_max-z_min)print z
17:对5*3的3*2的数组相乘
z=np.dot(np.ones((5,3)),np.ones((3,2)))print z
18:建5*5的数组,每一行的值为0-4
z=np.zeros((5,5))z=z+np.arange(5)print z
19:创建一个长度为10的数组,值在0-1 之间(间隔一样),不包括0 1
z=np.linspace(0,1,12,endpoint=True)[1:-1]print z
20:建长度为10的随机数组并排序
z=np.random.random(10)z.sort()print z
21:个随机数组A和B,判断是否相等
A=np.random.randint(0,2,5)B=np.random.randint(0,2,5)equal=np.allclose(A,B)print Aprint Bprint equal#其中allclose是element-wise的,相等的判断也可以设置误差范围
22:创建一个只读数组
z=np.zeros(10)z.flags.writeable=Falsez[0]=1
23:10*2的直角坐标转换到极坐标
z=np.random.random((10,2))x,y=z[:,0],z[:,1]R=np.sqrt(x**2+y**2)T=np.arctan2(y,x)print (R)print (T)
24:创建长度为10的数组,并将最大值替换成0
z=np.random.random(10)print zz[z.argmax()]=0print z
25:创建数组,x和y坐标覆盖[0,1]*[0,1]
z=np.zeros((10,10),[('x','float'),('y','float')])z['x'],z['y']=np.meshgrid(np.linspace(0,1,10),np.linspace(0,1,10))print z
26:输出numpy各种数据类型的最大和最小值
for dtype in [np.int8, np.int32, np.int64]: print(np.iinfo(dtype).min) print(np.iinfo(dtype).max)for dtype in [np.float32, np.float64]: print(np.finfo(dtype).min) print(np.finfo(dtype).max) print(np.finfo(dtype).eps)
27:创建有结构的数组,用来表示position(x,y)和颜色(R,G,B)
Z = np.zeros(10, [ ('position', [ ('x', float, 1), ('y', float, 1)]), ('color', [ ('r', float, 1), ('g', float, 1), ('b', float, 1)])])print(Z)
28:求(10,2)数组中,点到点的距离
z=np.random.random((10,2))x,y=np.atleast_2d(z[:,0]),np.atleast_2d(z[:,1])d=np.sqrt((x-x.T)**2+(y-y.T)**2)print d
29:faster with scipy
import scipyimport scipy.spatialz=np.random.random((10,2))d=scipy.spatial.distance.cdist(z,z)print d
30:
1,2,3,4,5
6,,,7,8
,,9,10,11
读取上述3行内容的文件(不包含#)
z=np.genfromtxt("missing.data",delimiter=",")
31:生成二维高斯函数
x,y=np.meshgrid(np.linspace(-1,1,10),np.linspace(-1,1,10))D=np.sqrt(x*x+y*y)sigma,mu=1.0,1.0G=np.exp(-((D-mu)**2/(2.0*sigma**2)))print G
32:将p个数值随机放到二维数组里面
n = 10p = 3Z = np.zeros((n,n))np.put(Z, np.random.choice(range(n*n), p, replace=False),1)print Z
33:减去数组每一行的均值
X = np.random.rand(2, 3)Y=X-X.mean(axis=1,keepdims=True)print Xprint Y
34:根据第n列对数组排序
z=np.random.randint(0,10,(3,3))print zprint (z[z[:,1].argsort()])
35:判断2D的数组,是否含有null的列
z=np.random.randint(0,3,(3,10))print (~Z.any(axis=0)).any()
36:寻找数组中离给定数值n最近的数
z=np.random.uniform(0,1,10)x=0.5m=z.flat[np.abs(z-x).argmin()]print zprint m
37创建可便利的函数,产生10个数值组成新的数组
def generate(): for x in xrange(10): yield xz=np.fromiter(generate(),dtype=float,count=-1)print z
38:数组计数
Z = np.ones(10)I = np.random.randint(0,len(Z),20)Z += np.bincount(I, minlength=len(Z))print(Z)
39:带权重的计数
X = [1,2,3,4,5,6]I = [1,3,9,3,4,1]F = np.bincount(I,X)print(F)
40:a(w,h,3)的图片(dtype=ubyte),计算不同color的数量
w,h=16,16I=np.random.randint(0,2,(h,w,3)).astype(np.ubyte)F=I[...,0]*256*256+I[...,1]*256+I[...,2]n=len(np.unique(F))print nprint np.unique(I)
41:Considering a four dimensions array, how to get sum over the last two axis at once ?
A = np.random.randint(0,10,(3,4,3,4))sum = A.reshape(A.shape[:-2] + (-1,)).sum(axis=-1)print(sum)
42:Considering a one-dimensional vector D, how to compute means of subsets of D using a vector S of same size describing subset indices ?
D = np.random.uniform(0,1,100)S = np.random.randint(0,10,100)D_sums = np.bincount(S, weights=D)D_counts = np.bincount(S)D_means = D_sums / D_countsprint(D_means)
43:获取成绩的对角矩阵
A=np.ones((3,2))B=np.ones((2,3))#直接算np.diag(np.dot(A, B))# Fast version,转置之后,行与行相乘,相当于原来的行乘列再相加;np.sum(A * B.T, axis=1)# Faster versionnp.einsum("ij,ji->i", A, B)
44:对于数据[1,2,3,4,5],在数字之间连续插入3个0
z=np.array([1,2,3,4,5])nz=3z0=np.zeros(len(z)+(len(z)-1)*nz)z0[::nz+1]=zprint z0
45:一个(5,5,3)的数组,如何与(5,5)的数组相乘
A = np.ones((5,5,3))B = 2*np.ones((5,5))print(A * B[:,:,None])
46:交换数组的两行
A=np.arange(9).reshape(3,3)print A#表示,取,1,0行,赋值给0,1行A[[0,1]]=A[[1,0]]print A
47:Consider a set of 10 triplets describing 10 triangles (with shared vertices), negate find the set of unique line segments composing all the triangles
faces = np.random.randint(0,100,(10,3))F = np.roll(faces.repeat(2,axis=1),-1,axis=1)F = F.reshape(len(F)*3,2)F = np.sort(F,axis=1)G = F.view( dtype=[('p0',F.dtype),('p1',F.dtype)] )G = np.unique(G)print(G)
48:C是一个bincount,需要产生一个数组,使得 np.bincount(A)==C
C = np.bincount([5,1,2,3,4,4,6])A = np.repeat(np.arange(len(C)), C)print(A)print np.bincount(A)==C
49:移动窗口的平均值,MA
def moving_average(a, n=3) : ret = np.cumsum(a, dtype=float) ret[n:] = ret[n:] - ret[:-n] return ret[n - 1:] / nZ = np.arange(20)print(moving_average(Z, n=3))
参考:
numpy100题
以上内容主要是参考numpy100题(实际60题),摘取了觉得更有意义的49题,并对函数进行了部分注释和说明,实例也更家明显;
喜欢notebook的同学也可以使用以下文件,可以直接看到输出:
http://download.csdn.net/detail/wo1185246535/9314017
- Theano 学习笔记
- Theano 学习笔记
- theano学习笔记
- Theano 学习笔记(一)
- Theano学习笔记
- theano学习笔记(二) :基础
- theano基础学习笔记1
- Theano学习笔记:Theano的艰辛安装体验
- Theano学习笔记:Theano的艰辛安装体验
- Theano学习笔记:Theano的艰辛安装体验
- 【theano-windows】学习笔记一——theano中的变量
- 【theano-windows】学习笔记三——theano中的导数
- theano tutorial学习笔记(一)
- Theano学习笔记01--Dimshuffle()函数
- Theano 学习笔记 Basics:Baby Steps - Algebra
- deep CNN, Theano和CUDA学习笔记
- theano学习笔记(1)—代数
- Python--Theano学习笔记(一)
- python核心编程-函数返回值
- JS window.open 使用说明
- iOS应用目录
- NSMutableString 进阶
- Android 开发中的日常积累
- Theano 学习笔记
- Android FancyCoverFlow的使用实现图片画廊形式的呈现
- 人
- Shell编程
- “第一次亲密接触”——iOS中策略模式初运用
- ecshop文章侧边栏导航,自动调用文章多级子栏目分类并且当前栏目及父栏目高亮显示
- linux驱动开发之内核树配置
- k-近邻算法(KNN)--1简单原理介绍与实践---by香蕉麦乐迪
- iOS中读取照片库