Python代码中func(*args, **kwargs)是什么意思?
这是Python函数可变参数 args及kwargs
*args表示任何多个无名参数,它是一个tuple
**kwargs表示关键字参数,它是一个dict
测试代码如下:
1
2
3
4
5
6
7
8
9
|
def foo( * args, * * kwargs): print 'args=' ,args print 'kwargs=' ,kwargs print '**********************' if __name__ = = '__main__' : foo( 1 , 2 , 3 ) foo(a = 1 ,b = 2 ,c = 3 ) foo( 1 , 2 , 3 ,a = 1 ,b = 2 ,c = 3 ) foo( 1 , 'b' , 'c' ,a = 1 ,b = 'b' ,c = 'c' ) |
执行结果如下:
1
2
3
4
5
6
7
8
9
10
11
12
|
args = ( 1 , 2 , 3 ) kwargs = {} * * * * * * * * * * * * * * * * * * * * * * args = () kwargs = { 'a' : 1 , 'c' : 3 , 'b' : 2 } * * * * * * * * * * * * * * * * * * * * * * args = ( 1 , 2 , 3 ) kwargs = { 'a' : 1 , 'c' : 3 , 'b' : 2 } * * * * * * * * * * * * * * * * * * * * * * args = ( 1 , 'b' , 'c' ) kwargs = { 'a' : 1 , 'c' : 'c' , 'b' : 'b' } * * * * * * * * * * * * * * * * * * * * * * |
python中transpose是什么意思?
我先来一个举例:
arr = np.arange(16).reshape((2, 2, 4))
arr的array是这样的
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7]],
[[ 8, 9, 10, 11],
[12, 13, 14, 15]]])
我们对arr进行transpose转置,arr2 = arr.transpose((1,0,2)),结果是这样:
array([[[ 0, 1, 2, 3],
[ 8, 9, 10, 11]],
[[ 4, 5, 6, 7],
[12, 13, 14, 15]]])
这是怎么来的呢。
arr.transpose((1,0,2))的1,0,2三个数分别代表shape()的三个数的顺序,初始的shape是(2,2,4),也就是2维的2 x 4矩阵,索引分别是shape的[0],[1],[2],arr.transpose((1,0,2))之后,我们的索引就变成了shape[1][0][2],对应shape值是shape(2,2,4),所以矩阵形状不变。
与此同时,我们矩阵的索引也发生了类似变化,如arr中的4,索引是arr[0,1,0],arr中的5是arr[0,1,1],变成arr2后,4的位置应该是在[1,0,0],5的位置变成[1,0,1],同理8的索引从[1,0,0]变成[0,1,0]。
numpy--prod和pad运算
为了做一个笔记(●'◡'●)
assert用法:
1、assert
语句用来声明某个条件是真的。2、如果你非常确信某个你使用的列表中至少有一个元素,而你想要检验这一点,并且在它非真的时候引发一个错误,那么
assert
语句是应用在这种情形下的理想语句。3、当assert语句失败的时候,会引发一
AssertionError
。np.newaxis
np.newaxis的功能是插入新维度,看下面的例子:
a=np.array([1,2,3,4,5])
print a.shape
print a
输出结果
(5,)
[1 2 3 4 5]
可以看出a是一个一维数组,
x_data=np.linspace(-1,1,300)[:,np.newaxis]
a=np.array([1,2,3,4,5])
b=a[np.newaxis,:]
print a.shape,b.shape
print a
print b
输出结果:
(5,) (1, 5)
[1 2 3 4 5]
[[1 2 3 4 5]]