以前所写python学习笔记,python初学时期的,两篇合而为一,原始出处:python学习笔记1python学习笔记2

备忘,如有转载,请注明出处。

——by realasking

Linux下Python程序名应取作:xxx.py,然后程序第一行写成:

#!/usr/bin/env python

未加语言相关的环境变量设置时,不应在python程序中加入非ASCII的字符,程序文件中以#引起的行为注释行。

Python程序写好后可按如下方法运行:

$python ./xxx.py 参数1 参数2 ...

其中python这一命令由系统环境变量$PYTHON的值或alias指定的python来决定,而参数的引入,是通过sys.argv来实现的,
应这样来使用参数:

import os
import sys
input_Args=sys.argv
Arg1=input_Args[1]
Arg2=input_Args[2]

由于参数是字符串,所以如果要传递数值型参数,需要用相应的函数转换,比如:

Arg1=float(Arg1)

python最方便的一点是它是胶水语言,较头痛的则是它的数据类型、文件读写等和其它语言有较大差别,第一个容易忘记的
地方是,它没有double型,它的float型即double精度,类型转换也应用float(A)这样的形式。另外,python的数据类型一般
不需要专门声明,不过可以定义空数组,在数值计算中,这个做法还是有些用的:

tmp=[]

python的循环和条件判断,采用缩进来区分,没有其它定界符,相同缩进表示相同层级的语句,至于循环和条件语句的开
始行的行末,则需要添加:作为标志,比如条件判断:

a=11
b=10
if b > a :
   print "b>a"
   elif b < a :
      print "b

在python中,感觉使用while循环比for循环更方便些,比如:

AA=11
a=0
while a < AA :
      执行语句
      a=a+1

用python读取格式化文本不是太方便,不过还是有办法的,比如读取一个数据矩阵中的一行数据:

f=open(input_file_name,"r")
......
data=[]
line=f.readline()
line=line.strip()
data.append(map(float, line.split(' ')))
.....
f.close()

如果是要读取整个矩阵,在data=[]和最后的append之间加上循环就是了。

矩阵或向量运算,应该采用numpyscipy,做法是:

import math
import numpy as np
import scipy as sp

然后就可以进行运算了,比如加法、除以一个数:

npdata=np.array(data)
data_sum=np.add(npdata,npdata)
data_frac=np.true_divide(npdata,2)

也可以按列合并矩阵(要求两矩阵行数一样):

new_matrix=np.hstack([mat1,mat2])

或按行合并矩阵(要求两矩阵列数一样):

new_matrix=np.vstack([mat1,mat2])

合并矩阵的命令同样可以用于合并向量,但是合并向量的时候有时会提示行列数不对,那可能是因为一个的维度是
(n个),而另一个的维度是(n列,1行),这种情况下,可用reshape来进行转换:

array2=array2.reshape(n)
new_array=np.hstack([array1,array2])

查看矩阵或向量维度的办法是:

xxx.shape

对于一个矩阵,若按其第一列元素大小顺序来对整个矩阵进行行排序,则执行:

mat1=mat1[mat1[:,0].argsort()]

在屏幕上输出数组:

print mat1

保存一个矩阵到文件:

np.savetxt(输出文件名,矩阵名)

Linux下python使用和学习笔记,面向对象部分,包括函数、多个返回值、传递对象、模块、面向对象等内容,

共分7个文件,其中test.py是主文件,mod.py是一个简单的函数文件,modclass.py是一个类,也是modinheritance.py的基类,

而以xxinheritancexx为名的都是派生和继承的练习。

test.py的内容:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#python函数、类、模块学习脚本
#作者:realasking
#主页:http://realasking.github.io
#2013-10-09

import mod as md
import numpy as np
import modclass as mc
import modinheritance as mi
import modinheritance2 as mi2
import modmultiinheritance as mmi

def firstfunc() :
    print '第一个函数'

firstfunc()

a=0.0
b=''
c=''

def testnumber(a,c) :
    global b
    a=a+1.0
    b='你好'
    c=b
    return [a,b,c]

#python可用列表或元组返回多个参数,放到不同变量中
[a,b,c]=testnumber(a,b)

print a,b
c=''
[a,b,c]=testnumber(a,c)
print a,b,c


#测试不同数据类型的传递
d=np.array([[1,2,3],[4,5,6],[7,8,9]])

def nptest(x) :
    y=np.sin(x)
    return [x,y]

[xx,y]=nptest(d)
print d
print xx
print y

cc=xx*y
print cc

#测试module文件中的函数
[xxx,yy]=md.nptest(d)
print xxx 
print yy

#类的测试
zs=mc.modclass()
zs.nptest(d)
[xxxx,yyy]=zs.getxy()
print xxxx
print yyy 

#测试列表 
xxtmp=[]
i=0
while i < 10:
   zss=mc.modclass()
   zss.nptest(xxxx)
   [xxxx,yyy]=zss.getxy()
   xxtmp.append(zss)
   print xxtmp[i].x
   i+=1

#派生类测试
mis=mi.modinheritance()
mis.nptest(xxxx)
[xxxxx,yyyy,cc]=mis.getxy()

#派生类测试2
mis2=mi2.modinheritance2()
mis2.nptest(xxxx)
[xxxxx,yyyy,cc,dd]=mis2.getxy()
print xxxxx,yyyy,cc,dd

#多重继承测试
mis3=mmi.modmultiinheritance()
mis3.nptest(xxxx)
cccccc=mis3.getxy()
print cccccc

mod.py文件内容:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#函数的使用
#作者:realasking
#主页:http://realasking.github.io
#2013-10-09

import numpy as np

def nptest(x) :
       y=np.sin(x)
       return [x,y]

modclass.py文件内容,也是类的构建:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#类的使用
#作者:realasking
#主页:http://realasking.github.io
#2013-10-09

import numpy as np

class modclass:
    #初始化,定义内部变量
    def __init__(self):
        self.a=0
        self.x=np.array([])
        self.y=np.array([])
    #从外部传值进来进行计算
    def nptest(self,x):
       self.x=x
       self.y=np.sin(self.x)
    #返回值
    def getxy(self):
       return [self.x*self.y,self.y]

modinheritance.py文件内容,也是类的继承:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#类的继承和派生
#作者:realasking
#主页:http://realasking.github.io
#2013-10-09

import numpy as np
import modclass as mc

class modinheritance(mc.modclass):
    #初始化,定义内部变量
    def __init__(self):
        mc.modclass.__init__(self)
        self.b=0
        self.aa=np.array([])
        self.bb=np.array([])
    #从外部传值进来进行计算
    def nptest(self,x):
       #调用父类同名函数,内部变量仍然共享
       mc.modclass.nptest(self,x)
       #self.a是父类中提供的内部变量,继承而来
       self.b=self.a+2
       #调用getxy也是父类中的
       [self.aa,self.bb]=mc.modclass.getxy(self)
    #返回值
    def getxy(self):
       return [self.aa,self.bb,self.b]

modinheritance2.py文件的内容:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#类的继承和派生2
#作者:realasking
#主页:http://realasking.github.io
#2013-10-09

import numpy as np
import modclass as mc
import modinheritance as mi

class modinheritance2(mi.modinheritance):
    #初始化,定义内部变量
    def __init__(self):
        mi.modinheritance.__init__(self)
        self.c=0
        self.cc=np.array([])
    #从外部传值进来进行计算
    def nptest(self,x):
       #调用父类同名函数,内部变量仍然共享
       mi.modinheritance.nptest(self,x)
       #self.a是父类中提供的内部变量,继承而来
       self.c=self.b*2
    #返回值
    def getxy(self):
       return [self.aa,self.bb,self.b,self.c]

modinheritance3.py文件的内容:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#类的继承和派生3
#作者:realasking
#主页:http://realasking.github.io
#2013-10-09

import numpy as np
import modclass as mc
import modinheritance as mi

class modinheritance3(mi.modinheritance):
    #初始化,定义内部变量
    def __init__(self):
        mi.modinheritance.__init__(self)
        self.c=0
        self.cc=np.array([])
    #从外部传值进来进行计算
    def nptest(self,x):
       #调用父类同名函数,内部变量仍然共享
       mi.modinheritance.nptest(self,x)
       #self.a是父类中提供的内部变量,继承而来
       self.c=self.b*2-1
    #返回值
    def getxy(self):
       return [self.aa,self.bb,self.b,self.c]

modmultiinheritance.py文件的内容:


#!/usr/bin/env python
# -*- coding: utf-8 -*-
#类的多继承和派生
#作者:realasking
#主页:http://realasking.github.io
#2013-10-09

import numpy as np
import modclass as mc
import modinheritance2 as mi2
import modinheritance3 as mi3

class modmultiinheritance(mi2.modinheritance2,mi3.modinheritance3):
    #初始化,定义内部变量
    def __init__(self):
        mi2.modinheritance2.__init__(self)
        mi3.modinheritance3.__init__(self)
        self.cc=np.array([])
    #从外部传值进来进行计算
    def nptest(self,x):
       #调用父类同名函数,内部变量仍然共享
       mi2.modinheritance2.nptest(self,x)
       mi3.modinheritance3.nptest(self,x)
       [a,b,c,d]=mi2.modinheritance2.getxy(self)
       [e,f,g,h]=mi3.modinheritance3.getxy(self)
       self.cc=h*b+f/g
    #返回值
    def getxy(self):
       return [self.cc]

执行结果:

[realasking@Laptop mod_test]$python ./test.py 
第一个函数
1.0 你好
2.0 你好 你好
[[1 2 3]
 [4 5 6]
 [7 8 9]]
[[1 2 3]
 [4 5 6]
 [7 8 9]]
[[ 0.84147098  0.90929743  0.14112001]
 [-0.7568025  -0.95892427 -0.2794155 ]
 [ 0.6569866   0.98935825  0.41211849]]
[[ 0.84147098  1.81859485  0.42336002]
 [-3.02720998 -4.79462137 -1.67649299]
 [ 4.59890619  7.91486597  3.70906637]]
[[1 2 3]
 [4 5 6]
 [7 8 9]]
[[ 0.84147098  0.90929743  0.14112001]
 [-0.7568025  -0.95892427 -0.2794155 ]
 [ 0.6569866   0.98935825  0.41211849]]
[[ 0.84147098  1.81859485  0.42336002]
 [-3.02720998 -4.79462137 -1.67649299]
 [ 4.59890619  7.91486597  3.70906637]]
[[ 0.84147098  0.90929743  0.14112001]
 [-0.7568025  -0.95892427 -0.2794155 ]
 [ 0.6569866   0.98935825  0.41211849]]
[[ 0.84147098  1.81859485  0.42336002]
 [-3.02720998 -4.79462137 -1.67649299]
 [ 4.59890619  7.91486597  3.70906637]]
[[ 0.62742108  1.76304538  0.17392737]
 [ 0.34550582 -4.77841949  1.667137  ]
 [-4.56932481  7.90020068 -1.99363595]]
[[ 0.36833317  1.73056479  0.03009844]
 [ 0.11701337 -4.76800625  1.65940619]
 [-4.52264351  7.89176398  1.8180512 ]]
[[  1.32622372e-01   1.70852457e+00   9.05779427e-04]
 [  1.36609043e-02  -4.76063376e+00   1.65289587e+00]
 [ -4.44147235e+00   7.88613188e+00   1.76276049e+00]]
[[  1.75371785e-02   1.69234561e+00   8.20436258e-07]
 [  1.86614503e-04  -4.75509451e+00   1.64732846e+00]
 [ -4.27947407e+00   7.88205653e+00   1.73038103e+00]]
[[  3.07536865e-04   1.67985944e+00   6.73115654e-13]
 [  3.48249724e-08  -4.75075909e+00   1.64250647e+00]
 [ -3.88467867e+00   7.87895041e+00   1.70839371e+00]]
[[  9.45789219e-08   1.66987858e+00   4.53084684e-25]
 [  1.21277870e-15  -4.74726233e+00   1.63828512e+00]
 [ -2.62823228e+00   7.87649452e+00   1.69224667e+00]]
[[  8.94517247e-15   1.66168844e+00   2.05285731e-49]
 [  1.47083218e-30  -4.74437593e+00   1.63455555e+00]
 [  1.29074388e+00   7.87449858e+00   1.67978152e+00]]
[[  8.00161105e-29   1.65482924e+00   4.21422313e-98]
 [  2.16334731e-60  -4.74194900e+00   1.63123425e+00]
 [  1.24045771e+00   7.87284127e+00   1.66981536e+00]]
[[  6.40257794e-057   1.64898987e+000   1.77596766e-195]
 [  4.68007157e-120  -4.73987740e+000   1.62825592e+000]
 [  1.17338934e+000   7.87144118e+000   1.66163597e+000]]
[[  1.68042640e-225   1.63955432e+000   0.00000000e+000]
 [  0.00000000e+000  -4.73652238e+000   1.62313097e+000]
 [  9.55219008e-001   7.86920111e+000   1.64895184e+000]] [[  4.09930043e-113   9.97325369e-001   0.00000000e+000]
 [  2.19030699e-239   9.99669830e-001   9.98500367e-001]
 [  8.82872574e-001   9.99867812e-001   9.96475032e-001]] 2
[[  1.68042640e-225   1.63955432e+000   0.00000000e+000]
 [  0.00000000e+000  -4.73652238e+000   1.62313097e+000]
 [  9.55219008e-001   7.86920111e+000   1.64895184e+000]] [[  4.09930043e-113   9.97325369e-001   0.00000000e+000]
 [  2.19030699e-239   9.99669830e-001   9.98500367e-001]
 [  8.82872574e-001   9.99867812e-001   9.96475032e-001]] 2 4
[array([[  1.43475515e-112,   3.49063879e+000,   0.00000000e+000],
       [  7.66607448e-239,   3.49884441e+000,   3.49475128e+000],
       [  3.09005401e+000,   3.49953734e+000,   3.48766261e+000]])]