theano
- theano.tensor.matrix(name=None,dtype=config.floatX):返回一个2维ndarry变量。
- theano.tensor.matrix(name=None,dtype=config.floatX):返回一个3维的ndarry变量。
- theano.tensor里有scalar(一个数据点),vector(向量),matrix(矩阵),tensor3(三维矩阵),tensor4(四维矩阵)。
python
- python中的
*args
和**kwargs
:
首先我们应该知道,并不是必须写成*args
和**kwargs
,变量前的*
是必须的,可以写成*var
和**vars
,而写成*args
和**kwargs
只是一个通俗的命名约定。
*args
和**kwargs
主要用于函数定义,可以将不定量的参数传递给一个函数。
*args
用来发送一个非键值对的可变数量的参数列表给一个函数。
**kwargs
允许将不定长度的键值对作为参数传递给一个函数,如果想在一个函数里处理带有名字的参数,应该使用**kwargs
。
2.python中内建函数isinstance的用法以及与type的区别
语法:isinstance(object, classinfo)
;用来判断对象类型。其中,object是变量,classinfo是类型即(tuple,dict,int,float,list,bool等)和class类,如参数object是classinfo类的实例,或者object是classinfo类的子类的一个实例,返回True,若object不是给定类型的实例,则返回结果总是False。若classinfo不是一种数据类型或者由数据类型构成的元组,将引发一个TypeError异常。
isinstance和type都可用来判断对象类型,但是对于一个class类的子类对象类型判断,type就不行,而isinstance可以。
3.python中子类调用父类的方法,super().__init__()
:
形式:
class A(object):
def __init__(self, xing, gender):
self.namea = 'aaa'
self.xing = xing
self.gender = gender
def funca(self):
print("function a :%s" %self.namea)
class B(A):
def __init__(self, xing, age):
super(B,self).__init__(xing, age)
self.nameb = 'bbb'
self.xing = xing.upper()
self.age = age + 1
def funcb(self):
print("function b: %s"%self.nameb)
b = B("lin", "man", 22)
print(b.nameb)
--->>bbb
print(b.namea)
---->>aaa
print(b.xing)
--->>LIN
print(b.age)
--->>23
b.funcb()
--->>function b: bbb
b.funca()
--->>function a: aaa
print(b.gender)
--->>22
通过验证,可以得出以下结论:
- B类可以继承A类,在B类的基础上可以调用A类所有的方法,代码最后的
b.funcb()
和b.funca()
可以实现。 - A,B同时拥有
__init__
,B会改写A中的__init__
方法,A类的方法失效。 - super函数可以调用A父类中的属性,如
namea
,xing
,当B中有同名属性时覆盖A中的同名属性,但调用函数时总是先查找它自身的定义,如果没有定义,则顺着继承链向上查找,直到在某个父类中找到为止。 - B类
__init__
参数需大于或者等于A父类的__init__
方法,因为super
初试化了,参数量为父类参数量。 -
super
函数原理:super().__init__(***,***)
中的***
参数为类B中输入的参数,但与类A中参数名相对应。
4.python中强大的format
函数
自从python2.6开始,新增了一种格式化字符串的函数str.format()
,次函数可以快速的处理各种字符串。
语法:它用{}
和:
来代替%
。
>>>"{} {}".format("hello", "world") #不设置指定位置,按默认顺序
'hello world'
>>>"{0} {1}".format("hello", "word") #设置指定位置
'hello world'
>>>"{1} {0} {1}".format("hello","world") #设置指定位置
'world hello world'
也可以设置参数:
print("这是一个: {test_name},作者是:{author}".format(test_name="test", author="sherry"))
--->>这是一个:test,作者是:sherry
也可以通过列表索引设置参数
my_list = ['test', 'sherry']
print("这是一个:{0[0]},作者是:{0[1]}".format(my_list)) #"0"是必须的
--->>这是一个:test,作者是:sherry
Numpy
- numpy.prob:
numpy.prob(a, axis=None, dtype=None, out=None, keepdims=<class 'numpy._globals._NoValue'>)
返回给定轴上的数组元素的乘积。
Notes:
当使用整数类型时,算术是模块化的,在溢出时不会产生错误,如:
x = np.array([536870910, 536870910, 536870910, 536870910])
np.prod(x)
--->>16
空阵列的prod
是元素1:
np.prod([])
--->>1.0
Examples:
默认情况下,计算所有的元素的乘积:
import numpy as np
print(np.prod([1., 2.]))
--->>2.0
即使输入数组是二维的:
a = np.prod([[1., 2.], [3., 4.]])
print(a)
--->>24.0
但是我们也可以指定要乘以的轴:
b = np.prod([[1., 2.], [3., 4.]], axis=1)
print(b)
--->>array([2., 12.])
如果x的类型是无符号的,那么输出类型是无符号整数:
x = np.array([1, 2, 3], dtype=np.uint8)
print(np.prod(x).dtype == np.uint)
--->>True
如果X是有符号整数类型,那么输出类型是默认的有符号整数:
x = np.array([1, 2, 3], dtype=np.int8)
print(np.prod(x).dtype == int)
--->>True