python语法

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= (123)
kwargs= {}
**********************
args= ()
kwargs= {'a'1'c'3'b'2}
**********************
args= (123)
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]]













原文地址:https://www.cnblogs.com/byteHuang/p/6938548.html