前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python:numpy总结(4)

Python:numpy总结(4)

作者头像
昱良
发布2018-04-04 16:26:33
8190
发布2018-04-04 16:26:33
举报
文章被收录于专栏:机器学习算法与Python学习

31、chr函数,获取指定的字符

例子:

#获取指定的字符for i in range(65,70):

print str(chr(i))

结果:

A BCDE

32、random.shuffle

例子:

ll=range(9)#返回列表print ll #shuffle函数随机打乱列表中的元素顺序print random.shuffle(ll)

print ll

结果:

[0, 1, 2, 3, 4, 5, 6, 7, 8]

None

[8, 5, 1, 4, 2, 6, 0, 3, 7]

shuffle函数随机打乱列表中的元素顺序

33、vdot 点积

例子:

#vdot 返回两向量的点积l1=[1,2,3] l2=[4,5,6] ll=[l1,l2]

print vdot(l1,l2)

print dot(l1,l2)

print mat(l1)*mat(l2).T

print mat(ll)

结果:

32

32

[[32]][[1 2 3][4 5 6]]

vdot 和 dot都可以获取向量的点积。

代码语言:lua
复制

区别:

ll=[[1,2,3],[4,5,6],[1,2,3]]print dot(mat(ll),mat(ll).T)

print vdot(mat(ll),mat(ll))

结果:

[[14 32 14] [32 77 32] [14 32 14]][[105]]

总结:对于向量来说,vdot dot向量的点积结果相同。 对于矩阵来说,dot是矩阵的点积。 而vdot是对应位置的元素乘积求和。 结果中的105=1^2+2^2+3^3+4^2+5^2+6^2+1^2+2^2+3^3

34、次方计算**

例子:

print 3*2**2print 3*2**0.5print (3*2)**2print (3*2)**0.5

结果:

12 4.24264068712 36 2.44948974278

可见 **次方计算优先级要高!

35、max函数

例子:

ll=[3,4,6,2,89,9,3,2]

print max(ll) l2=[[3,4,6,2,89,9,3,2],[3,6,7,8,983,3,5,6]]print max(l2[0])

print max(l2)

结果:

89

89

[3, 6, 7, 8, 983, 3, 5, 6]

对于矩阵的最大值的求法,还不知道怎么搞。稍后更新一下。

36、mgrid函数

#开始值,结束值,步长。如果步长为虚数,表示产生的个数长度print mgrid[-5:5:3j] #结果:[-5. 0. 5.]print mgrid[-5:5:3] #结果:[-5 -2 1 4]print '*'*20print mgrid[-5:5:3j,-5:5:3j]

print '*'*20print mgrid[-5:5:3,-5:5:3]

结果:

[-5. 0. 5.] [-5 -2 1 4] ********************[[[-5. -5. -5.] [ 0. 0. 0.] [ 5. 5. 5.]] [[-5. 0. 5.] [-5. 0. 5.] [-5. 0. 5.]]] ******************** [[[-5 -5 -5 -5] [-2 -2 -2 -2] [ 1 1 1 1] [ 4 4 4 4]] [[-5 -2 1 4] [-5 -2 1 4] [-5 -2 1 4] [-5 -2 1 4]]]

代码语言:javascript
复制
mgrid函数说明:开始值,结束值,步长。如果步长为虚数,表示产生的个数长度。 

对照结果即可知道函数的功能。

37、ogrid函数

例子:

print ogrid[-5:5:3j]

print ogrid[-5:5:3]

print ogrid[-5:5:3j,-5:5:3j]

print ogrid[-5:5:3,-5:5:3]

结果:

[-5. 0. 5.] [-5 -2 1 4] [array([[-5.], [ 0.], [ 5.]]), array([[-5., 0., 5.]])] [array([[-5], [-2], [ 1], [ 4]]), array([[-5, -2, 1, 4]])]

代码语言:javascript
复制
ogrid跟mgrid一样。不同的是,一个数矩阵,一个数组形式。
第三个擦数如果是实数,说明是步长。如果是虚数,说明是个数。 

ogrid[-5:5:3,-5:5:3]第一部分产生多行一列,第二部分产生一行多列。这与mgrid不同。

38、random函数

print random.seed(1) #要每次产生随机数相同就要设置种子,相同种子数的Random对象,相同次数生成的随机数字是完全相同的

#用于生成一个指定范围内的随机符点数print random.uniform(-1,1,5)

#结果:[ 0.40254497 -0.42350395 -0.67640645 -0.54075394 -0.99584028]#均匀分布

#用于生成一个0到1的随机符点数: 0 <= n < 1.0print random.random()

print random.random(5)

print random.rand(2,3)#2行3列 结果: None 0.417022004703

[ 7.20324493e-01 1.14374817e-04 3.02332573e-01 1.46755891e-01 9.23385948e-02][[ 0.18626021 0.34556073 0.39676747][ 0.53881673 0.41919451 0.6852195 ]]

#用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n: a <= n <= b

print random.randint(5, 10)

print random.randint(5,10,size=(5,5)) 结果:

None 8

[[9 5 6 8 5] [5 6 9 9 6] [7 9 7 9 8] [9 7 9 7 9] [6 6 5 6 6]]

更多关于random的函数的解析,请参看这篇文章:http://blog.csdn.net/pipisorry/article/details/39086463

39、tofile、fromfile

例子:

a =arange(0,12) a.shape = 3,4print a a.tofile("a.bin") b = fromfile("a.bin", dtype=float) # 按照float类型读入数据print b # 读入的数据是错误的print a.dtype # 查看a的dtypeb = fromfile("a.bin", dtype=int32) # 按照int32类型读入数据print b # 数据是一维的b.shape = 3, 4 # 按照a的shape修改b的shapeprint b

结果:

None[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]][ 2.12199579e-314 6.36598737e-314 1.06099790e-313 1.48539705e-313 1.90979621e-313 2.33419537e-313] int32 [ 0 1 2 3 4 5 6 7 8 9 10 11][[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]]

使用数组的方法函数tofile可以方便地将数组中数据以二进制的格式写进文件。tofile输出的数据没有格式,因此用numpy.fromfile读回来的时候需要自己格式化数据。

代码语言:lua
复制

Note: 1. 读入的时候设置正确的dtype和shape才能保证数据一致。 并且tofile函数不管数组的排列顺序是C语言格式的还是Fortran语言格式的,统一使用C语言格式输出。 2. sep关键字参数:此外如果fromfile和tofile函数调用时指定了sep关键字参数的话, 数组将以文本格式输入输出。{这样就可以通过notepad++打开查看, 不过数据是一行显示,不便于查看} user_item_mat.tofile(user_item_mat_filename, sep=’ ‘)

40、numpy.load和numpy.save

例子:

a =arange(0,12)

a.shape = 3,4print asave('a.npy',a) c=load('a.npy') print c

结果:

None[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]][[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]]

numpy.load和numpy.save函数(推荐在不需要查看保存数据的情况下使用) 以NumPy专用的二进制类型保存数据,这两个函数会自动处理元素类型和shape等信息, 使用它们读写数组就方便多了,但是numpy.save输出的文件很难和其它语言编写的程序读入。 Note: 1. 文件要保存为.npy文件类型,否则会出错 2. 保存为numpy专用二进制格式后,就不能用notepad++打开(乱码)看了,这是相对tofile内建函数不好的一点

numpy.savez函数 如果你想将多个数组保存到一个文件中的话,可以使用numpy.savez函数。savez函数的第一个参数是文件名,其后的参数都是需要保存的数组,也可以使用关键字参数为数组起一个名字,非关键字参数传递的数组会自动起名为arr_0, arr_1, …。savez函数输出的是一个压缩文件(扩展名为npz),其中每个文件都是一个save函数保存的npy文件,文件名对应于数组名。load函数自动识别npz文件,并且返回一个类似于字典的对象,可以通过数组名作为关键字获取数组的内容: 如果你用解压软件打开result.npz文件的话,会发现其中有三个文件:arr_0.npy, arr_1.npy, sin_array.npy,其中分别保存着数组a, b, c的内容。

a = array([[1,2,3],[4,5,6]]) b = arange(0, 1.0, 0.1) c = sin(b) savez("result.npz", a, b, sin_array = c) r =load("result.npz")

print r["arr_0"] # 数组a

print r["arr_1"] # 数组b p

rint r["sin_array"] # 数组c

结果:

None[[1 2 3] [4 5 6]][ 0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9] [ 0. 0.09983342 0.19866933 0.29552021 0.38941834 0.47942554 0.56464247 0.64421769 0.71735609 0.78332691]

numpy.savetxt和numpy.loadtxt(推荐需要查看保存数据时使用) Note:savetxt缺省按照’%.18e’格式保存数据, 可以修改保存格式为‘%.8f’(小数点后保留8位的浮点数), ’%d’(整数)等等 总结: 载入txt文件:numpy.loadtxt()/numpy.savetxt() 智能导入文本/csv文件:numpy.genfromtxt()/numpy.recfromcsv() 高速,有效率但numpy特有的二进制格式:numpy.save()/numpy.load()

39、40部分来源:http://blog.csdn.net/pipisorry/article/details/39088003。详细内容请参看这个链接。

41、permutation函数

例子:

#混淆位置。如果是多维数组,则混淆一维的。例如下面的arr.print random.permutation(10)

print random.permutation([1, 4, 9, 12, 15]) arr=arange(9).reshape((3,3))

print arr

print random.permutation(arr)

结果:

None [2 9 6 4 0 3 1 7 8 5] [12 1 4 9 15][[0 1 2] [3 4 5] [6 7 8]]

permutation混淆位置。如果是多维数组,则混淆一维的。例如下面的arr.

42、complex构造复数

例子:

print complex(0,100)#结果:100j

43、norm求范数

例子:

from scipy.linalg.misc import normprint norm([8,6,10])

结果:

14.1421356237

默认情况下,求二范数。也就是各个元素的平方和再开平方。 当然,也可以求取其他范数。例如p范数、无穷范数等。 我这里import写的是scipy。其实numpy里面也有这个函数。详细的其他范数的求法请参考官网http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.linalg.norm.html内容的介绍。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-06-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习算法与Python学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档