1.python __len__(self)详解
如果一个类表现得像一个list,要获取有多少个元素,就得用 len() 函数。要让 len() 函数工作正常,类必须提供一个特殊方法__len__(),它返回元素的个数。
例如,我们写一个 Students 类,把名字传进去:
class Students(object):
def __init__(self, *args):
self.names = args
def __len__(self):
return len(self.names)
只要正确实现了__len__()方法,就可以用len()函数返回Students实例的“长度”:
>>> ss = Students('Bob', 'Alice', 'Tim')
>>> print len(ss)
3
2.python中assertion异常
python中的assert是一种最简单的异常机制
assert的基本语法是:"assert" expression1 ["," expression2]
expression1用于判断生成布尔值,当expression1为假的时候,则抛出异常,[]中的内容可选,即用户可以选择异常的提示值:
>>>a=23
>>>assert a==23
>>>a=a-1
>>>assert a==23
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AssertionError
>>>assert a==23 , "error1"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AssertionError: error1
3.python -- np.random.seed()
seed( ) 用于指定随机数生成时所用算法开始的整数值,如果使用相同的seed( )值,则每次生成的随即数都相同,如果不设置这个值,则系统根据时间来自己选择这个值,此时每次生成的随机数因时间差异而不同。
所以seed总是跟random搭配使用。
运行一次seed( )就会产生一个数组(根据()里面的值,值相同产生相同的数组,值不同数组不相同), np,random.random()就只要不重新运行seed( )是按之前得到数组,只要运行一次np,random.random()按顺序在数组中取一次值。
这正是对应了之前的认知其实python里 random产生的数一直是伪随机数。例如下面的例子:
num = 0
while(num<5):
np.random.seed(2)
print(np.random.random())
num+=1
0.43599490214200376
0.43599490214200376
0.43599490214200376
0.43599490214200376
0.43599490214200376
---------------------
np.random.seed(2)
num = 0
while(num<5):
print(np.random.random())
num+=1
0.43599490214200376
0.025926231827891333
0.5496624778787091
0.4353223926182769
0.42036780208748903
---------------------
4.Python numpy函数:linspace()创建等差数列
linspace用于创建一个是等差数列的一维数组。它创建的数组元素的数据格式是浮点型。
常看到的一般是三个参数,分别是:起始值、终止值(默认包含自身)、数列个数
.meshgrid函数
功能:从一个坐标向量中返回一个坐标矩阵
参数:
x1,x2...,xn:数组,一维的数组代表网格的坐标。
indexing:{'xy','ij'},笛卡尔坐标'xy'或矩阵'ij'下标作为输出,默认的是笛卡尔坐标。
sparse:bool类型,如果为True,返回一个稀疏矩阵保存在内存中,默认是False。
copy:bool类型,如果是False,返回一个原始数组的视图保存在内存中,默认是True。如果,sparse和copy都为False,将有可能返回一个不连续的数组。而且,如果广播数组的元素超过一个,可以使用一个独立的内存。如果想要对这个数组进行写操作,请先拷贝这个数组。
返回值:x1,x2,....,xn:ndarray(numpy数组)
nx,ny = (3,2)
#从0开始到1结束,返回一个numpy数组,nx代表数组中元素的个数
x = np.linspace(0,1,nx)
#[ 0. 0.5 1. ]
y = np.linspace(0,1,ny)
# [0. 1.]
xv,yv = np.meshgrid(x,y)
'''
xv
[[ 0. 0.5 1. ]
[ 0. 0.5 1. ]]
yv
[[ 0. 0. 0.]
[ 1. 1. 1.]]
'''