np.squeeze()
从数组的形状中删除单维条目,即把shape中为1的维度去掉
np.squeeze(images)
np.transpose()
矩阵转置
arr = np.arange(16).reshape((2, 2, 4))
'''
[[[ 0, 1, 2, 3],
[ 4, 5, 6, 7]],
[[ 8, 9, 10, 11],
[12, 13, 14, 15]]]
'''
arr.transpose((1,0,2))
'''
[[[ 0, 1, 2, 3],
[ 8, 9, 10, 11]],
[[ 4, 5, 6, 7],
[12, 13, 14, 15]]]
'''
arr.transpose((0,2,1))
'''
[[[ 0, 4],
[ 1, 5],
[ 2, 6],
[ 3, 7]],
[[ 8, 12],
[ 9, 13],
[10, 14],
[11, 15]]]
'''
arr.transpose((1,2,0))
'''
[[[ 0, 8],
[ 1, 9],
[ 2, 10],
[ 3, 11]],
[[ 4, 12],
[ 5, 13],
[ 6, 14],
[ 7, 15]]]
'''
排序
sorted(iterable,key=None,reverse=False),返回新的列表,对所有可迭代的对象均有效
sort(key=None,reverse=False) 就地改变列表 reverse:True反序;False 正序
a = [10, 2, 3, 2, 1, 3]
a1 = sorted(a)
print(a1, ' ', type(a1))
a2 = sort(a)
print(a2, ' ', type(a2))
对于字典排序:
a = {"a": 10}
for key in a.keys():
print(type(key))
for value in a.values():
print(type(value))
for item in a.items():
print(type(item))
a = {"a": 10, "b": 19, "c": 20, "d": 19}
a1 = sorted(a.items(), key=lambda x: x[1], reverse=True)
print(a1, ' ', type(a1))
import operator
a2 = sorted(a.items(), key=operator.itemgetter(0))
print(a2, ' ', type(a2), ' ', dict(a2))
a3 = sorted(a.items(), key=operator.itemgetter(1))
print(a3, ' ', type(a3), ' ', dict(a3))
python跨目录调用
如上图所示,若在rest.py中调用train文件夹下train.py中的类、方法等,仅需在rest.py中添加如下代码:
#from 文件夹名.python文件 import 类/函数
#确保__init__.py在文件夹中存在
from train.train import train
若在train文件夹下train.py中调用net文件夹下AlexNet.py中的类、方法等,仅需在train.py中添加如下代码:
import sys
'''默认情况下python解析器会搜索当前目录、已安装的内置模块和第三方模块,
搜索路径存放在sys模块的path中,
这种方法是运行时修改,脚本运行后就会失效的'''
sys.path.append("..")
#from 文件夹名.python文件 import 类/函数
from net.AlexNet import AlexNet
List中string转为int/float
# Python2
data = ['1','3.2','2']
# eval()函数用来执行一个字符串表达式,并返回表达式的值。
data = map(eval, data)
print data
# 输出为[1, 3.2, 2]
# Python3
ls=[1,2,3]
rs=map(str,ls)
print(rs)
# 输出为<map at 0x3fed1d0>
print(list(rs))
# 输出为['1','3.2','2']
匿名函数lamdba
python 使用 lambda 来创建匿名函数,表达式:lambda [arg1 [,arg2,.....argn]]:expression
- lambda只是一个表达式,函数体比def简单很多。
- lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
- lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
- 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 可写函数说明
sum = lambda arg1, arg2: arg1 + arg2;
# 调用sum函数
print "相加后的值为 : ", sum( 10, 20 )
print "相加后的值为 : ", sum( 20, 20 )
# 以上实例输出结果:
# 相加后的值为 : 30
# 相加后的值为 : 40
持续更新中……