python知识总结

来源:互联网 发布:mac 下载ubuntu镜像 编辑:程序博客网 时间:2024/06/01 09:50

 x = [2*i for i in range(9)]
 print x

[0, 2, 4, 6, 8, 10, 12, 14, 16]

/*****************************************************************************************************/

print range(9)

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

/***********************************/

print range(1, 5)

[1, 2, 3, 4]

/*******************************************************/

os.walk() 方法用于通过在目录树种游走输出在目录中的文件名,向上或者向下。

语法    http://www.runoob.com/python/os-walk.html

walk()方法语法格式如下:

os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])参数
  • top -- 根目录下的每一个文件夹(包含它自己), 产生3-元组 (dirpath, dirnames, filenames)【文件夹路径, 文件夹名字, 文件名】。

  • topdown --可选,为True或者没有指定, 一个目录的的3-元组将比它的任何子文件夹的3-元组先产生 (目录自上而下)。如果topdown为 False, 一个目录的3-元组将比它的任何子文件夹的3-元组后产生 (目录自下而上)。

  • onerror -- 可选,是一个函数; 它调用时有一个参数, 一个OSError实例。报告这错误后,继续walk,或者抛出exception终止walk。

  • followlinks -- 设置为 true,则通过软链接访问目录。

返回值

该方法没有返回值。

/*****************************************************************************************************************/

arange函数用于创建等差数组,使用频率非常高,arange非常类似range函数,会python的人肯定经常用range函数,比如在for循环中,几乎都用到了range,下面我们通过range来学习一下arange,两者的区别仅仅是arange返回的是一个数据,而range返回的是list。

>>> range(10)
[0,1,2,3,4,5,6,7,8,9]
>>> range(1,11)
[1,2,3,4,5,6,7,8,9,10]
>>> range(0,30,5)
[0,5,10,15,20,25]
>>> range(0,10,3)
[0,3,6,9]
>>> range(0,-10,-1)
[0,-1,-2,-3,-4,-5,-6,-7,-8,-9]
>>> range(0)
[]

/*************************************

>>> xrange(5)
xrange(5)
>>> list(xrange(5))
[0,1,2,3,4]
>>> xrange(1,5)
xrange(1,5)
>>> list(xrange(1,5))
[1,2,3,4]
>>> xrange(0,6,2)
xrange(0,6,2)
>>> list(xrange(0,6,2))
[0,2,4]

/*********************************************

a=range(0,10)
print type(a)print a
print a[0],a[1]

输出结果为:

<type 'list'>[0,1,2,3,4,5,6,7,8,9]0,1

/*********************************************

zip([1,2,3],['a','b','c'])
结果是
[(1,搜索 'a'), (2, 'b'), (3, 'c')]

就是依次取出每一个数组的元素,然后组合
操作数可以更多
zip([1,2,3],['a','b','c'],[4,5,6])也是可以的

如果元素长度不一致会被砍到一样长
另外zip(*list)也就是数组前面带个星号,是上述操作的逆操作
zip(*[(1, 'a'), (2, 'b'), (3, 'c')])的结果是[1,2,3],['a','b','c']
/*********************************************************************************************************

a=zip([121, 122], [[1, 1, 1], [2, 2, 2]]) 

结果为[(121, [1, 1, 1]), (122, [2, 2, 2])]

b=zip([121, 122], [[1, 1, 1], [2, 2, 2], [3, 3, 3]])

结果为[(121, [1, 1, 1]), (122, [2, 2, 2])]

c=zip([121, 122], [[1, 1, 1], [2, 2, 2]], [3, 3, 3])

结果为[(121, [1, 1, 1], 3), (122, [2, 2, 2], 3)]

/*****************************************************************************************

import numpy as np
import matplotlib.pyplot as plt
plt.figure(1) # 创建图表1
plt.figure(2) # 创建图表2
ax1 = plt.subplot(211) # 在图表2中创建子图1
ax2 = plt.subplot(212) # 在图表2中创建子图2
x = np.linspace(0, 3, 100)
for i in xrange(5):
    plt.figure(1)  #❶ # 选择图表1
    plt.plot(x, np.exp(i*x/3))
    plt.sca(ax1)   #❷ # 选择图表2的子图1
    plt.plot(x, np.sin(i*x))
    plt.sca(ax2)  # 选择图表2的子图2
    plt.plot(x, np.cos(i*x))
plt.show()

# -*- coding: utf-8 -*-
#载入pylab
from pylab import *
#用numpy生成X轴数据
X = np.linspace(-np.pi, np.pi, 256,endpoint=True)
#用numpy根据numpy生成sin,cos数据
C,S = np.cos(X), np.sin(X)

#根据数据绘制
plot(X,C)
plot(X,S)

#显示图片,如果在命令行模式,会弹出图片预览窗口,
#IPython下,直接在命令行展示图片
show()
/*************************************************************************************************

  1. import matplotlib.pyplot as plt  
  2. import numpy as np  
  3. from mpl_toolkits.mplot3d import Axes3D  
  4.   
  5.   
  6. #设置三维坐标  
  7. fig = plt.figure()  
  8. ax = Axes3D(fig)  
  9.   
  10.   
  11. #生成数据  
  12. x = np.linspace(-5,5,200)  
  13. y = np.linspace(-5,5,200)  
  14. X, Y = np.meshgrid(x, y)#XY平面的网格数据  
  15. Z = (1-X/2+X**7+Y**5)*np.exp(-X**2-Y**2)  
  16.   
  17.   
  18. #画3d图  
  19. ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap=plt.cm.jet)  
  20. #ax.plot_surface(X,Y,z,rstride=1,cstride=1,cmap=plt.get_cmap('rainbow'))  
  21. #等高线图  
  22. ax.contourf(X,Y,Z,zdir='z',offset=-2,cmap='rainbow'#zdir= x/y/x 轴的等高线 offset=等高线的位置  
  23.   
  24.   
  25. plt.show()  

/***********************************************************************************************************

import scipy.ioas sio 
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

mat1 = '4a.mat' #这是存放数据点的文件,需要它才可以画出来。上面有下载地址
data = sio.loadmat(mat1)
m = data['data']

x,y,z = m[0],m[1],m[2]
ax=plt.subplot(111,projection='3d')         #创建一个三维的绘图工程

#将数据点分成三部分画,在颜色上有区分度
ax.scatter(x[:1000],y[:1000],z[:1000],c='y')#绘制数据点          //y为黄色
ax.scatter(x[1000:4000],y[1000:4000],z[1000:4000],c='r')        //r为红色
ax.scatter(x[4000:],y[4000:],z[4000:],c='g')                            //g为绿色

ax.set_zlabel('Z') #坐标轴
ax.set_ylabel('Y')
ax.set_xlabel('X')
plt.show()


1.xs和ys:x轴和y轴坐标。

2.zs:这是z轴的坐标值,可以是所有点对应一个值,或者是每个点对应一个值。

3.zdir:决定哪个坐标轴作为z轴的维度(通常是zs,但是也可以是xs或者ys)。

/*********************************************************************************************

http://www.cnblogs.com/qianlifeng/archive/2012/02/13/2350086.html         bar函数的使用

http://www.cnblogs.com/hellcat/p/7070548.html

/*************************************************************************************************

warpAffine函数           http://blog.csdn.net/qq_18343569/article/details/47954079

函数作用:

对图像进行仿射变换,变换的图像边界是平行的

函数调用形式:

C++: void warpAffine(InputArray src, OutputArray dst, InputArray M, Size dsize, int flags=INTER_LINEAR, intborderMode=BORDER_CONSTANT, const Scalar& borderValue=Scalar())

参数详解:

InputArray src:输入的图像

OutputArray dst:输出的图像

InputArray M:透视变换的矩阵

Size dsize:输出图像的大小

int flags=INTER_LINEAR:输出图像的插值方法,

combination of interpolation methods (INTER_LINEAR or INTER_NEAREST) and the optional flagWARP_INVERSE_MAP, that sets M as the inverse transformation ( \texttt{dst}\rightarrow\texttt{src} )

int borderMode=BORDER_CONSTANT:图像边界的处理方式

const Scalar& borderValue=Scalar():边界的颜色设置,一般默认是0

/************************************************************************************

使用opencv画一些几何形状:cv2.line(),cv2.circle(),cv2.rectangle(),cv2.ellipse(),

    cv2.putText()

http://blog.sina.com.cn/s/blog_15432cb7e0102x3la.html

http://blog.csdn.net/hustcanpi/article/details/50630017

/******************************************************************************************

opencv视频操作基础---VideoCapture类

http://blog.csdn.net/weicao1990/article/details/53379881

/**********************************************************************************************

在python中sys.argv[1:]是什么?          python test1.py  /home/lihongwei/video  30

                                                                         argv[0]          argv[1]                     argv[2]

我的问题是:为何[]里会有”:“冒号?sys.argv[1:]又代表什么?

这就是个分片操作
简单例子
l = [1,2,3,4,5]
l[1:],意思就是取列表l第一个元素后的值,也就是[2,3,4,5]
l[2:], -----------------[3,4,5]
还可以倒序来取
l[:-1],-----------------从右到左,取最后一个元素前面的值,[1,2,3,4]
l[:-2],-----------------[1,2,3]
而你问的sys.argv[1:],这个是你main(xxx)方法的参数,那么这个参数从哪里来

从这里来,比如
python test.py --t help --v
那么sys.argv就是['test.py', '--t', 'help', '--v']
那么sys.argv[1:]就是['--t', 'help', '--v']

/***************************************************************************************************

段错误 (核心已转储) 

确信其他代码没有问题,则检查数组是否存在越界问题,象你贴出来的这种代码,多半是越界问题造成的。

/**************************************************************************************************************************/

Python使用os.listdir()函数来得目录内容的介绍

在Python中可以使用os.listdir()函数获得指定目录中的内容 

http://blog.csdn.net/wickedvalley/article/details/53115289

/***********************************************************************************************/

Python中有join()和os.path.join()两个函数,具体作用如下:
    join():    连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串
    os.path.join():  将多个路径组合后返回         

http://www.jb51.net/article/63598.htm

#对序列进行操作(分别使用' '与':'作为分隔符)
 
>>> seq1=['hello','good','boy','doiido']
>>>print' '.join(seq1)
hello good boy doiido
>>>print':'.join(seq1)
hello:good:boy:doiido
 
 
#对字符串进行操作
 
>>> seq2="hello good boy doiido"
>>>print':'.join(seq2)
h:e:l:l:o: :g:o:o:d: :b:o:y: :d:o:i:i:d:o
 
 
#对元组进行操作
 
>>> seq3=('hello','good','boy','doiido')
>>>print':'.join(seq3)
hello:good:boy:doiido
 
 
#对字典进行操作
 
>>> seq4={'hello':1,'good':2,'boy':3,'doiido':4}
>>>print':'.join(seq4)
boy:good:doiido:hello
 
 
#合并目录
 
>>>importos
>>> os.path.join('/hello/','good/boy/','doiido')
'/hello/good/boy/doiido'
/**********************************************************************************
opencv2     cv2.cv.CV_CAP_PROP_FRAME_COUNT       cv2.cv.CV_CAP_PROP_FRAME_WIDTH   cv2.cv.CV_CAP_PROP_FRAME_HEIGH
opencv3     cv2.CAP_PROP_FRAME_COUNT            cv2.CAP_PROP_FRAME_WIDTH     cv2.CAP_PROP_FRAME_HEIGHT
cv2.VideoWriter_fourcc()是opencv3.0所用,而cv2.cv.CV_FOURCC()用于opencv2.4.*

2.4 version:
out = cv2.VideoWriter('output.avi',cv2.cv.CV_FOURCC('M','J','P','G'), 20.0, (640,480))
3.0 version:
out = cv2.VideoWriter('output.avi',cv2.VideoWriter_fourcc(*'XVID'), 20.0, (640,480))
/*********************************************************

python100例            http://www.iplaypy.com/python-100/

/******************************************************************************

Python OS模块介绍 http://www.iplaypy.com/module/os.html

1 )、os.sep 更改操作系统中的路径分隔符。
2 )、os.getcwd()获取当前路径,这个在Python代码中比较常用。
3 )、os.listdir() 列出当前目录下的所有文件和文件夹。
4 )、os.remove() 方法可以删除指定的文件。
5 )、os.system() 方法用来运行shell命令。
6 )、os.chdir() 改变当前目录,到指定目录中。

/**********************************************************************

python中的三目运算符

为真时的结果 if 判断条件 else 为假时的结果(注意,没有冒号)

>>> 1 if 5>3 else 0
1
>>> 1 if 5<3 else 0
0
>>>

/****************************************************************************************************************/  

linux cut -d '/' -f 1这条命令是什么意思?



-f表示取第一个字段的值。
如:echo "a/b/c" |cut -d '/' -f 1,执行结果是a。执行过程:先按/分段,分段后结果是:第一个字段是a,第2个字段是b,第3个字段是c,-f就是取第几个字段。

/***************************************************************************************************************************

Python2.6中引入了format进行字符串格式化,相比在字符串中用%的类似C的方式,更加强大方便:

a ='I’m like a {} chasing {}.'
# 按顺序格式化字符串,'I’m like a dog chasing cars.'
a.format('dog','cars')

# 在大括号中指定参数所在位置
b = 'I prefer {1} {0} to {2} {0}'
b.format('food','Chinese','American')

# >代表右对齐,>前是要填充的字符,依次输出:
# 000001
# 000019
# 000256
for i in [1, 19,256]:
    print('The index is {:0>6d}'.format(i))

# <代表左对齐,依次输出:
# *---------
# ****------
# *******---
for x in ['*', '****','*******']:
    progress_bar = '{:-<10}'.format(x)
    print(progress_bar)

for x in [0.0001, 1e17,3e-18]:
    print('{:.6f}'.format(x))  # 按照小数点后6位的浮点数格式
    print('{:.1e}'.format(x))  # 按照小数点后1位的科学记数法格式
    print ('{:g}'.format(x))   # 系统自动选择最合适的格式

template = '{name} is {age} years old.'
c = template.format(name='Tom',age=8))# Tom is 8 years old.
d = template.format(age=7,name='Jerry')# Jerry is 7 years old.
/*****************************************************************************************************************

Restarting data prefetching from start    ?

https://github.com/BVLC/caffe/issues/1579