去年用matlab来仿真的时候,由于需要仿真每一个cell用户的性能、位置以及其他的行为特征,隐约的就感到应该用OOP来实现。但matlab实现这种功能实在是繁琐的要命,对后来的工作造成了很大的困惑。现在发现python也能在计算方面有很好的支持,所以决定趁着工作之余学习下相关知识,也顺便记录下过程中的知识点。
首先上个槽点。在python2.7中,如果键入如下代码:
1/2
得到的结果竟然是0,而不是0.5。听说这个问题在python3里已经解决了。但在python2中,如果要避免这种尴尬,可以直接转换除数为float型,当然也可以在开头加上如下代码:
from __future__ import division
言归正传。Matlab有着良好的封装及help文档,使用过程中的问题在网上也能很快的找到相应的答案。什么都不需要管,直接调用函数就ok:这种方式其实用起来真的舒爽。所以刚开始看python科学技术相关的内容时,一下被各种库给砸晕了。有很多代码,作者信誓旦旦是跑过的。但复制到自己的IDE里,总是报错。比如在matlab中直接敲sin的函数不会有任何问题,在python中必须要先将math库import才行。
sin(1)
NameError: name 'sin' is not defined
import math
math.sin(1)
>>>0.8414709848078965
import numpy
import numpy as np
from numpy import *
from numpy import random
第1行、第2行和第3行都将整个库引入,区别在于:
import numpy
print numpy.random.rand()
>>>0.12529248337010257
import numpy as np
print np.random.rand()
>>>0.4021073441551414
from numpy import *
print random.rand()
>>>0.6517953909858865
比较可以发现,第2行把numpy简写为了np,只是为了方便之后敲代码时方便而已。而第3行则是将整个库引入,并将numpy中的函数populate到当前的工作环境,不需要在每次使用函数前加上模块名,非常方便。但是在较大型的程序中,存在很多模块的情况下,这种做法存在风险,可能会多个函数名相同而造成混淆。第4行只引入了numpy库中的random模块。