2018-05-21

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


  1. 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

  1. numpy.prob:
    numpy.prob(a, axis=None, dtype=None, out=None, keepdims=)
    返回给定轴上的数组元素的乘积。
    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

你可能感兴趣的:(2018-05-21)