zoukankan      html  css  js  c++  java
  • python使用记录

      1 #2017-7-17
      2 1、用len()函数可以获得list元素的个数;
      3     len()可以获取字符串长度
      4     
      5 2、 list正向0开始索引,,逆向-1开始索引;
      6     也可以把元素插入到指定的位置,比如索引号为1的位置:
      7     list.insert(索引,元素)
      8     要删除list末尾的元素,用pop()方法:
      9     list.pop()
     10     要删除指定位置的元素,用pop(i)方法,其中i是索引位置
     11     要把某个元素替换成别的元素,可以直接赋值给对应的索引位置:
     12     list[i] = ***
     13 
     14 3、  只有1个元素的tuple定义时必须加一个逗号(1,)来消除歧义
     15 
     16 4、if 判别式 :(注意别少了“:”)
     17     else/elif
     18     
     19 5、name = input()返回的数据类型是str! 
     20 6、for x in ...循环就是把 序列中 每个元素代入变量x,然后执行缩进块的语句;Python提供一个range()函数,可以生成一个整数序列;
     21 
     22 7、dict在内部就可以直接计算出Michael对应的存放成绩的“页码”,也就是95这个数字存放的内存地址,直接取出来,所以速度非常快;避免key不存在的错误,有两种办法,一是通过in判断key是否存在;dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value;删除一个key,用dict.pop(key)方法,对应的value也会从dict中删除
     23 
     24 8、创建一个set,需要提供一个list不可以放入可变对象,因为无法判断两个可变对象是否相等
     25     s = set([1, 1, 2, 2, 3, 3])
     26     s = {1, 2, 3}
     27     add(key)方法可以添加元素到set中,可以重复添加,但不会有效果
     28     s.add(4)
     29     s.remove(4)
     30     set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作,返回交,并集(合)set()表示空集,只能用len()去判断。
     31     
     32 9、None是一个特殊的常量;None和任何其他的数据类型比较永远返回False;你可以将None复制给任何变量
     33 
     34 10、定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号;
     35     没有return语句,函数执行完毕后也会返回结果,只是结果为None
     36     调用的时候,既可以按顺序提供默认参数,比如调用enroll('Bob', 'M', 7),意思是,除了name,gender这两个参数外,最后1个参数应用在参数age上,city参数由于没有提供,仍然使用默认值。
     37 
     38     也可以不按顺序提供部分默认参数。当不按顺序提供部分默认参数时,需要把参数名写上(非默认参数也可以)。
     39     
     40     定义默认参数要牢记一点:默认参数必须指向不变对象或只有变量名!
     41     
     42     定义参数 数目可变的函数:function(*number)参数前面加了一个*号。在函数内部,参数numbers接收到的是一个tuple;Python允许你在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去;
     43     
     44 11、递归:
     45 ===> fact(5)
     46 ===> 5 * fact(4)
     47 ===> 5 * (4 * fact(3))
     48 ===> 5 * (4 * (3 * fact(2)))
     49 ===> 5 * (4 * (3 * (2 * fact(1))))
     50 ===> 5 * (4 * (3 * (2 * 1)))
     51 ===> 5 * (4 * (3 * 2))
     52 ===> 5 * (4 * 6)
     53 ===> 5 * 24
     54 ===> 120
     55 
     56 在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。
     57 
     58 12、递归(Iteration)
     59     如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)
     60     很多其他数据类型是没有下标的,但是,只要是可迭代对象,无论有无下标,都可以迭代
     61     因为dict的存储不是按照list的方式顺序排列,所以,迭代出的结果顺序很可能不一样;
     62     默认情况下,for key in d,dict迭代的是key。
     63     如果要迭代value,可以用for value in d.values()(应该是字典的一种函数),
     64     如果要同时迭代key和value,可以用for k, v in d.items()。
     65 
     66     Python内置的enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身:
     67     for i, value in enumerate(['A', 'B', 'C']):
     68     ...     print(i, value)
     69 
     70     for循环里,同时引用了两个变量:
     71      for x, y in [(1, 1), (2, 4), (3, 9)]:
     72     ...     print(x, y)
     73 
     74 13、方法与函数
     75     方法和对象相关;
     76     函数和对象无关。
     77     Java中只有方法,C中只有函数,而C++里取决于是否在类中。
     78 
     79 14、循环列表生成:[元素形式,内部“简单 单支 判断语句”]
     80     L1 = ['Hello', 'World', 18, 'Apple', None]
     81     l2 = [s.lower() for s in L1 if isinstance(s,str)]
     82     print(l2)
     83 
     84 15、生成器:generator
     85     在循环的过程中不断推算出后续的元素,这样就不必创建完整的list,从而节省大量的空间。
     86     把一个列表生成式的[]改成(), g = (x * x for x in range(10))
     87     就创建了一个generator
     88     通过next(g)函数获得generator的下一个返回值
     89     next(g)
     90     0
     91     ...也可通过for循环输出(则不需要nex语句)
     92     
     93 16、可迭代的“函数” yield
     94     函数定义中包含yield语句,那么这个函数就不再是一个普通函数,而是一个generator函数
     95     generator和函数的执行流程不一样。
     96     函数是顺序执行,遇到return语句或者最后一行函数语句就返回。
     97     generator的函数,在每次调用next()的时候执行,遇到yield语句返回(返回yield后的值),再next()时,继续从上次返回的yield语句处继续执行(也就是函数执行只是中断了一下,可以返回继续执行)
     98     
     99 ###*********************************我是分割线**************************************************************    
    100 #2017-07-18 15:15:42
    101 
    102 1、 一类是集合数据类型,如list、tuple、dict、set、str等, 这些可以直接作用于for循环的对象统称为可迭代对象:Iterable
    103     一类是generator,生成的迭代对象:可以被next()函数调用,并不断返回下一个值的对象称为迭代器:Iterator
    104     Iter()可以将list ,tuple,dict..转换成可迭代对象
    105     
    106 2、函数式编程就是,将函数作为参数传参!
    107 
    108 3、map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的        
    109     Iterator返回。 r = map(f函数, [1, 2, 3, 4, 5, 6, 7, 8, 9]),结果r是一个Iterator
    110     Iterator是一种惰性序列:仅在需要的时候才会去调用它的body
    111     通过list()函数让它把整个序列都计算出来并返回一个list。list(r)
    112 
    113 4、reduce把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:
    114 reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
    115 
    116 5、 def char2num(s):
    117         return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s]
    118     {}是一个字典L,L[key]取字典中的value
    119     
    120 6、s=''.join(s);s=['s','b','c']zifu列表连接成字符串
    121    函数中还可以定义函数
    122    
    123 7、filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。
    124     list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))
    125     filter()这个高阶函数,注意到filter()函数返回的是一个Iterator,也就是一个惰性序列
    126 
    127 8、常数并不能直接转乘Iterable,可以先转str,
    128 
    129 9、key指定的函数将作用于list的每一个元素上,并根据key函数返回的结果进行排序(也就是按照key转换后的值与默认“从小到大”的顺序,对list排序,这里好像没有True or Flase的问题,函数完成的只是转换,有默认的顺序)
    130 
    131 10、sorted()函数也是一个高阶函数,它还可以接收一个key函数来实现自定义的排序(key估计是其默认参数,所以更改是要写出变量名。)sorted([36, 5, -12, 9, -21], key=abs)
    132 
    133 11134 
    135 10、正则表达式,         
    136     (1)、[]匹配字符集,使用其中一个字符
    137     (2)、s=r"^**",匹配行首;(其在[]中,'除了')
    138             s=r"**$",匹配行尾;(其在[]中,'无意')
    139             
    140     (3)>>> s(当使用''''''输入字符串时,实际存储是下面)
    141 '
    hello
    slie
    seif
    ejf
    aef
    ef
    e
    f
    
    ge
    ge
    g
    
    '
    142         这种情况下,行首匹配只能管第一行,可用多行匹配参数fimtall(*,*,re.M)
    143     (4144         d    匹配任意十进制数,相当于 [0-9]
    145         D    匹配任意非数字字符,相当于 [^0-9]
    146         s    匹配任意空白字符,相当于 [ 	
    
    fv]
    147         S    匹配任意非空白字符,相当于 [^ 	
    
    fv]
    148         w    匹配任意数字和字母,相当于 [a-zA-Z0-9_]
    149         W    匹配任意非数字和字母的字符,相当于 [^a-zA-Z0-9_]
    150         +    匹配前一个字符或子表达式一次或多次
    151         *    匹配前面的字符或者子表达式0次或多次   
    152         {n}    匹配前一个字符或子表达式n次
    153         {m,n}    匹配前一个字符或子表达式至少m次至多n次
    154         ?    匹配前一个字符或子表达式0次或1次重复
    155         
    156     (5)编译后还是要使用re调用方法,re.
    157         pattern1 = re.compile(p1)#同样是编译
    158         matcher1 = re.search(pattern1,key)#同样是查询
    159         
    160      (6)方法:
    161      findall()找到 RE匹配的所有子串,并把它们作为一个列表返回 
    162                 import re;
    163                 s=r"";
    164                 re.findall(s,"")
    165      (7)分组:
    166         用 ()  表示的就是要提取的分组(Group),
    167         如果正则表达式中定义了组,就可以在Match对象上用group()方法提取出子串来
    168         group(0)永远是原始字符串,group(1)、group(2)……表示第1、2、……个子串
    169         >>> m = re.match(r'^(d{3})-(d{3,8})$', '010-12345')
    170         >>> m.group(0)
    171         '010-12345'
    172         >>> m.group(1)
    173         '010'
    174         >>> m.group(2)
    175         '12345'
    176         
    177         
    178 11、返回函数,感觉挺难,应该是没有接触过的原因
    179 
    180 12、关键字lambda表示匿名函数,因为函数没有名字,不必担心函数名冲突,
    181 map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9])冒号前面的x表示函数参数。
    182 匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果。
    183 
    184 13、函数对象有一个__name__属性,可以拿到函数的名字:
    185  def now():
    186     print('2015-3-25')
    187 
    188  now.__name__
    189  
    190 14、装饰器,也是一个没有接触过的东西
    191 
    192 #2017-07-19 13:31:48
    193 1、 模块就是一个.py文件,引入文件,就要具体到.py文件,包名指向__init__.py文件,只引入包名,mean引入包中的__init__.py
    194     使用模块还可以避免函数名和变量名冲突,尽量不要与内置函数名字冲突.
    195     为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)。
    196     每一个包目录下面都会有一个__init__.py的文件,否则,Python就把这个目录当成普通目录,而不是一个包
    197     __init__.py可以是空文件,也可以有Python代码,因为__init__.py本身就是一个模块,而它的模块名就是mycompany。
    198     自己创建模块时要注意命名,不能和Python自带的模块名称冲突。
    199 
    200 2、Python模块的标准文件模板(编写一个hello的模块:):
    201 
    202     任何模块代码的第一个字符串都被视为模块的文档注释
    203     使用__author__变量把作者写进去
    204     导入sys模块后,就有了变量sys指向该模块,利用sys,就可以访问sys模块的所有功能
    205     sys模块argv变量,用list存储了命令行的所有参数,第一个参数是该.py文件的名称
    206     运行python3 hello.py获得的sys.argv就是['hello.py']
    207     这种__name__,只有运行主文件是本文件时才执行,最常见的就是运行测试
    208     
    209     
    210 #!/usr/bin/env python3
    211 # -*- coding: utf-8 -*-
    212 
    213 ' a test module '  
    214 
    215 __author__ = 'Michael Liao' 
    216 
    217 import sys 
    218 
    219 def test():
    220 
    221     args = sys.argv
    222     if len(args)==1:
    223         print('Hello, world!')
    224     elif len(args)==2:
    225         print('Hello, %s!' % args[1])
    226     else:
    227         print('Too many arguments!')
    228 
    229 
    230 if __name__=='__main__':
    231     test()
    232     
    233 3、 正常的函数和变量名是公开的(public),可以被直接引用,比如:abc,x123,PI等
    234     __xxx__这样的变量是特殊变量,可以被直接引用,但是有特殊用途
    235     _xxx和__xxx这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc,__abc等
    236     
    237 4、当我们试图加载一个模块时,Python会在指定的路径下搜索对应的.py文件,如果找不到,就会报错:
    238     默认情况下,Python解释器会搜索当前目录、所有已安装的内置模块和第三方模块,搜索路径存放在sys模块的path变量中
    239     sys.path
    240 ['', '/Library/Frameworks/Python.framework/Versions/3.4/lib/python34.zip', '/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4', '/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/plat-darwin', '/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/lib-dynload', '/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages']
    241 
    242 5、面向对象思想:
    243     
    244     5.1假设我们要处理学生的成绩表,为了表示一个学生的成绩,面向过程的程序可以用一个dict表示:
    245 
    246     std1 = { 'name': 'Michael', 'score': 98 }
    247     std2 = { 'name': 'Bob', 'score': 81 }
    248     而处理学生成绩可以通过函数实现,比如打印学生的成绩:
    249 
    250     def print_score(std):
    251         print('%s: %s' % (std['name'], std['score']))
    252     
    253     
    254     5.2如果采用面向对象的程序设计思想,我们首选思考的不是程序的执行流程,而是Student这种数据类型应该被视为一个对象,这个对象拥有name和score这两个属性(Property)。如果要打印一个学生的成绩,首先必须创建出这个学生对应的对象,然后,给对象发一个print_score消息,让对象自己把自己的数据打印出来。
    255 
    256     class Student(object):
    257 
    258         def __init__(self, name, score):
    259             self.name = name
    260             self.score = score
    261 
    262         def print_score(self):
    263             print('%s: %s' % (self.name, self.score))
    264             
    265             
    266 6、目前不准备设计python类思想的编程!c++还没搞熟,,,,,,
    267     andor、not是python提供的逻辑操作符
    268     只要不为0的值都会转化为bool类型,所以abc直接与bool比较,没法比较,但是if 'abc' ==> if bool('abc')
    269     if(条件)
    270     print('abc == True','abc' == True)
    271     if 'abc':
    272         print('abc == True')
    273         
    274 7、即使文件已经关闭,但f还是拥有这个文件的句柄,所以转换为bool类型为 True    
    275     f=open("Iter.py")
    276 
    277     f.close() 
    278     if f:
    279         print(True)
    280     else:
    281         print(False)
    282 
    283 8、默认都是读取文本文件,并且是UTF-8编码的文本文件(应该是按照UTF-8读取,但是内部按照UNICODEING存储)
    284     要读取二进制文件,用'rb'模式打开文件
    285     写文件和读文件是一样的,传入标识符'w'或者'wb'表示写文本文件或写二进制文件:
    286     当我们写文件时,是放到内存缓存起来,只有调用close()方法时,操作系统才保证把没有写入的数据全部写入磁盘
    287     
    288     
    289 9、操作文件和目录的函数一部分放在os模块中,一部分放在os.path模块中
    290     # 查看当前目录的绝对路径:
    291     os.path.abspath('.')
    292 
    293     创建,不要直接拼字符串,而要通过os.path.join()函数,这样可以正确处理不同操作系统的路径分隔符:
    294     os.path.join('/Users/michael', 'testdir')
    295     '/Users/michael/testdir'
    296 
    297     拆分路径时,也不要直接去拆字符串,而要通过os.path.split()函数,这样可以把一个路径拆分为两部分,后一部分总是最后级别的目录或文件名:
    298     >>> os.path.split('/Users/michael/testdir/file.txt')
    299     ('/Users/michael/testdir', 'file.txt')
    300 
    301     可以直接让你得到文件扩展名,很多时候非常方便:
    302     >>> os.path.splitext('/path/to/file.txt')
    303     ('/path/to/file', '.txt')
    304     
    305     这些合并、拆分路径的函数并不要求目录和文件要真实存在,它们只对字符串进行操作
    306     
    307 10、把'变量'变成可存储或传输的过程称之为序列化(不只是保存数据,还有结构,,,,)
    308     变量内容从序列化的对象重新读到内存里称之为反序列化
    309     
    310     pickle.dumps()方法把任意对象序列化成一个bytes,然后,就可以把这个bytes写入文件。或者用另一个方法pickle.dump()直接把对象序列化后写入一个file-like Object.
    311     当我们要把对象从磁盘读到内存时,可以先把内容读到一个bytes,然后用pickle.loads()方法反序列化出对象,也可以直接用pickle.load()方法从一个file-like Object中直接反序列化出对象。
    312     
    313 11、有关操作系统多线程,多进程编程也是没有接触过的东西
    314 
    315 **************************************************************************************************
    316 #2017-07-22 14:57:26
    317 1、class Student(object):
    318     pass
    319     class后面紧接着是类名,即Student,
    320     类名通常是大写开头的单词,
    321     紧接着是(object),表示该类是从哪个类继承下来的
    322     
    323 2、 自由地给一个实例变量绑定属性,类中并没有定义,但是实例化后却能添加属性!!!
    324     类数据属性:定义在类里面但在函数外面的变量,它们都是静态的。
    325     实例属性:__init__()方法里的变量就是实例属性,这些属性只有被创建时才会被创建
    326     可以在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去
    327     初始化__init__方法的第一个参数永远是self,表示创建的实例本身,就可以把各种属性绑定到self
    328     
    329     class Student(object):
    330 
    331     def __init__(self, name, score):
    332         self.name = name
    333         self.score = score
    334      def print_score(self):
    335         print('%s: %s' % (self.name, self.score))
    336         
    337 3、 有了__init__方法,在创建实例就不能传入空的参数了,必须传入与__init__方法匹配的参数,但self不需要传
    338     Python解释器自己会传进去
    339     类中方定义方法,除了第一个参数是self外,其他和普通函数一样。
    340     要调用一个方法,实例变量上直接调用,除了self不用传递,其他参数正常传入bart.print_score()
    341     
    342 4、属性的名称前加上两个下划线__,在Python中,实例的变量名如果以__开头,就变成了一个私有变量(private)
    343   def __init__(self, name, score):
    344         self.__name = name
    345         self.__score = score
    346         
    347 5、Python “没有变量”,有“名字绑定”,一个名字为一个实例(instance)的引用,变量只是大家沿用了更熟悉的概念而已。
    348    `a = 20` 这句代码里,`a` 只是一个名字(引用),
    349    真正存在的是:各种类型‘值’,其内存不以变量名而转移,没有引用会消失!
    350 
    351 *********************************************************************************************************
    352 #2017-07-23 16:07:30
    353 
    354 1、鉴于python 中没有指针引用这类具体类型,想要使用这类功能的时候,对于当个变量来说似乎没有这种功能,因为没有像c、c++    中直接代表变量内存的东西,python有的全部是‘引用’,故对于列表,之类的数据,直接赋值列表名,相当于引用赋值
    355     
    356 2、除非对饮引用直接操作,才会更改引用指向的值,否则,通过引用获取地址之类的赋值操作不会更改引用的值
    357     a=1                                                    nums=[1,2,3]
    358     b=a                                                    a=nums
    359     b=4(直接修改引用)                                      a[0]=4(通过引用取地址,修改,对于变量a,nums这层的引用没变)
    360     a=1                                                    nums=[4,2,3]
    361 
    362 ***********************************************************************************************************
    363 #2017-07-24 15:24:58
    364 1、str()函数直接对数字列表转换,会将[] ,也当成字符串元素转换
    365 
    366 **********************************************************************************************************
    367 #2017-07-25 15:15:45
    368 1、python 全局变量,使用:global声明变量,在声明的区域内可以使用外部的全局变量
    369 name='lhf'
    370 def change_name():
    371     #global name
    372     name='帅了一比'
    373     print('change_name',name)
    374 change_name()
    375 print(name)
    376 
    377 
    378 2、递归中的“类似静态变量”2
    379 class Solution(object):
    380     def __init__(self, ways=0):
    381         self.ways = ways
    382     def climbStairs(self, n):    
    383         if n-1==0:
    384             self.ways=self.ways+1
    385         if n-2==0:
    386             self.ways=self.ways+1
    387         if n-1 > 0:
    388             self.climbStairs(n-1)
    389         if n-2 > 0:
    390             self.climbStairs(n-2)
    391         return self.ways
    392 **********************************************************************************************************
    393 #2017-07-28 15:49:31
    394 1、递归函数的编写:要搞清楚返回值的类型,以及怎么样使用返回值 
    395 2、递归真正有价值的是从返回处开始的,(从最后一层返回)
    396 3、子叶节点不是数,是其子叶为None的二叉树
    397 4、满足条件可终止的递归:    
    398     def layerroots(self):
    399         for i in self.roots:
    400            
    401         if self.last == None:
    402             self.layerroots()
    403             
    404             
    405             
    406 ***********************************************************************************************************
    407 #2017-08-25 21:10:29
    408 动态地改变Python搜索路径:(只能先设置路径,再导入包这一种操作吗),也许因为路径只能使用字符串处理的原因,import 不能含有字符串
    409 模块必须处于Python搜索路径中才能被导入,但你不想设置个永久性的大路径,因为那样可能会影响性能,所以,你希望能够动态地改变这个路径。
    410 sys.path是个列表,所以在末尾添加目录是很容易的,用sys.path.append就行了。当这个append执行完之后,新目录即时起效,以后的每次import操作都可能会检查这个目录。
    411 如同解决方案所示,可以选择用sys.path.insert(0,…,这样新添加的目录会优先于其他目录被import检查。
    412 
    413 **********************************************************************************************************
    414 在python 中对图像的通道操作
    415 http://www.voidcn.com/article/p-otstjfet-z.html
    416 
    417 *****************************************************************************************************
    418 #2017-10-24 22:49:22
    419 python cv2显示保存热点图
    420 cv2.applyColorMap(data,cv2.COLORMAP_HOT)
    421 
    422 ****************************************************************************************************
    423 利用增加纬度的方式单通道边三通道,每个元素扩展至三个数
    424 data4=np.dstack((data1,data2,data3))
    425 
    426 ****************************************************************************************************
    427 numpy中的数据类型转换,不能直接改原数据的dtype!  只能用函数astype()
    428 
    429 *************************************************************************************************
    430 #np多维矩阵存储方式
    431     #当其仅作为数据存储时,可继续按照数组形式理解,分页存储[页索引][行索引][行中,具体一个]
    432     #当其使用轴向函数时,立体理解好点,越往后的轴,所包含的“元素”越具体:0轴一个元素,一个面;1轴,一个元素,一行。。。
    433     #这都是最值的索引函数,取0轴索引最值,取1轴索引最值,取2轴索引最值,输出与其垂直的平面形状,
    434     print(np.argmax(a, axis=2))
    435     print(a.shape)
    436     
    437     
    438     
    439 ****************************************************************************************************
    440 #np.pad补边(输入矩阵,范围,方式,值):
    441 #范围每个()
    442 #描述一个维度有几个()意味着填补几个维度,此维度整体扩充,(前补几个,后补几个)
    443 #填补这么多(1275,1110,3)
    444 padded_I = np.pad(I, offset_3d, 'constant', constant_values=(0))
    445 
    446 
    447 *****************************************************************************************************
    448 np.transpose((2,0,1))
    449 #(2,0,1)是shape列表的索引,
    450 #例shape(10,10,3)>shape(3,10,10) 
    451 #按照上面转换,整体形状转变
    452 #元素也照此变化到新的位置,此时将索引视为一个列表,(2,0,1)就是其索引, a[0][1][2]->a[2][0][1]
    453 #最后的效果就是图片数据重构的感觉,
    454 #不会造成通道交换,因为整体变换,通道那一维的索引整体变化,相对不变
    455 
    456 #还有一个只交换行内元素的位置,a[...,[2,1,0]],用于图片通道交换,[2,1,0]同上
    457 
    458 
    459 ******************************************************************************************************
    460 #前者返回垂直轴面的最大值,后者返回最大值的索引
    461 ens_segscore = np.amax(ens_score, axis=2)
    462 ens_segmask = np.argmax(ens_score, axis=2)
  • 相关阅读:
    CodeForces 681D Gifts by the List (树上DFS)
    UVa 12342 Tax Calculator (水题,纳税)
    CodeForces 681C Heap Operations (模拟题,优先队列)
    CodeForces 682C Alyona and the Tree (树上DFS)
    CodeForces 682B Alyona and Mex (题意水题)
    CodeForces 682A Alyona and Numbers (水题,数学)
    Virtualizing memory type
    页面跳转
    PHP Misc. 函数
    PHP 5 Math 函数
  • 原文地址:https://www.cnblogs.com/kanuore/p/8059047.html
Copyright © 2011-2022 走看看