usage:Ctrl + F 搜索想找的函数
1、python使用函数作为参数
2、Python中的size、shape、len和count
3、
torch.randn(2, 3) :randn产生随机(按照标准正太分布)数;为2行3列的tensor。
torch.rand(2,3):rand产生0~1均匀分布的随机数(输入是shape)。
np.random.rand(a,b,c,...):效果和torch.rand类似,有多少输入量,就是产生多少维随机数
np.random.randn(a,b,c,...):效果同torch.randn
np.random.seed(m):怎么理解np.random.seed()?
a.type(): 指出a的数据类型;返回的是string
type(a):同上(用的少)
isinstance(a, torch.FloatTensor):参数检验(合法化检验)
4、data.cuda():返回一个gpu上的引用
5、注意:torch.tensor中,需要用b.size(),功能和b.shape同;
而numpy中用a.size,且功能和a.shape不同--->torch中是函数,numpy中是属性
注:下图中,b为torch中张量;a为numpy中张量
b.dim():显示torch张量维度
6、torch中的张量:
torch.tensor()生成指定标量(接受真实数据内容);
torch.FloatTensor()生成随机数(接受数据的shape);
torch.FloatTensor()、torch.Tensor()(注意是大写的Tensor)接受 ‘[ ]’形式时,和torch.tensor()同,为避免混淆,这种用法少用
注意:np中np.ones()用法和torch.FloatTensor()同,不过shape要以向量形式( []、()形式)输入(一维除外);输出全为1
np.zeros()用法同
torch.ones()输入也是shape,但格式更随意
7、torch中size和shape的索引:size(1)、shape[1]
8、list():可将torch.Size类型转换为list
9、a.numel():类似numpy中的size,返回所含元素个数(number of element)
10、a.reshape():numpy函数,接受一个 新的shape形式,如(2,3),表示生成矩阵shape为2维,第一维2元素,第二位3元素;新的shape 可以且最多只可指定一个维度为-1(-1的维度可以自动计算元素个数)
11、yield关键字:(后补充)Python yield 使用浅析
12、range(a, b[, c]):a,b,c全为int类型(20190806官网),返回range类型(相当于迭代器,注意返回的不是列表list),取 [a, b)中整数 ,步长(每次取数间隔)为c;
若给定 一个参数,则输入是b;两个参数,则输入代表a、b;
a、c可无,无a时(只有一个变量b时),a默认为0,无c时,默认是1(注意是正数1)
利用range的迭代器属性,根据条件快速生成满足条件的列表
np.arange(a, b, c):numpy.ndarray类型;c步长可以为小数;Python 基础——range() 与 np.arange()
13、set(a):接受一个迭代器对象a,返回一个删除a中重复元素的set
set(a).intersection(b):看a和b是否有交集(下图list将结果列表化)
14、numpy.random.shuffle(x):将x 随机打乱顺序,无返回值;详见下链接
numpy.random.shuffle()与numpy.random.permutation()的区别
15、python中数组(numpy.array)的基本操作
16、需要先 import os ;os.path.join(a, b, c, ...),其中a、b、c是字符串,详见os.path.join()
17、time.time(); 返回当前时间的时间戳(1970纪元后经过的浮点秒数)。
time.localtime(time.time()); 【注意】下图例子是python 2.x版本,python 3中print需要写成print(....)
18、assert:断言,用于指明需要的条件,如不满足,可以有字符提示
python assert的作用
19、dict():创建字典 创建字典的 5 种方式
20、np.dot(w.t, X):“.t”是转置操作;“dot”是矩阵乘法
21、np.sum(a[, axis = m]):对a的第m维求和(-1对应最后一维,-2对应倒数第二维)
【注】list类型可以执行np.array类型相同的操作(函数操作20、 21均可)
python numpy函数的使用
import numpy as np
a = [[[1, 2, 3,], [4, 5, 6]], [[1.1, 2.1, 3.1], [4.1, 5.1, 6.1]]]
print( np.sum(a, axis=-1) )
print( np.sum(a, axis=0) )
print( np.sum(a, axis=1) )
print( np.sum(a, axis=2) )
## output
#axis = -1 ## channel
[[ 6. 15. ]
[ 6.3 15.3]]
# axis = 0 ## height
[[ 2.1 4.1 6.1]
[ 8.1 10.1 12.1]]
# axis = 1 ## width
[[5. 7. 9. ]
[5.2 7.2 9.2]]
# axis = 2 ## channel
[[ 6. 15. ]
[ 6.3 15.3]]
22、np.concatenate((a, b) [, axis = m] ) :在第m为连接a、b;m可为负数(同21);默认为第一个维度(0维)
【】连接哪个维度,那个维度的元素个数就变化
23、python中的切片:
由上可以看出,只需要按照 “[ ]” 的取值范围从左往右依次读就可以了,[ : ]就是取全部,[m]就是读取上一部分取值后的第m(从0开始)个元素。
【add】a[ ][ ]与a[ , ]的区别如下,
a[ , ]是在原数组上进行取值,不可超出维度;
a[ ][ ]本质上是先计算a[ ](设其值为b),在其基础上再计算[ ](即计算b[ ])
import numpy as np
a = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print("a的shape:", a.shape) # (2, 2, 2)
b = a[:, :, :]
"""
[[[1 2]
[3 4]]
[[5 6]
[7 8]]]
"""
print(b)
b = a[:, :, :, :]
print(b) # IndexError: too many indices for array
c = a[:][:][:]
"""
[[[1 2]
[3 4]]
[[5 6]
[7 8]]]
"""
print(c)
"""
[[[1 2]
[3 4]]
[[5 6]
[7 8]]]
"""
c = a[:][:][:][:]
24、numpy.squeeze(a,axis = None):删除a中个数为1的维度,如(1,3,3,1,2)--->(3,3,2);多用于画图前使用
numpy的squeeze函数
25、
plt.imread(fname):根据图片路径(图片名),得到
plt.imshow(a):根据数组类型,展示图片