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]]