top[top_ind].reshape(*(blob.shape))
这一句的这个星星,是要干嘛?
top[top_ind].data[...] = blob.astype(np.float32, copy=False)
这一句的三个点,好熟悉的感觉,但不知到要干嘛
请教,谢谢
1
northisland OP >>> import numpy as np
>>> a = np.zeros( shape=(2, 3), dtype=np.float32 ) >>> a array([[ 0., 0., 0.], [ 0., 0., 0.]], dtype=float32) >>> a.shape (2, 3) >>> b = np.zeros( shape=(1, 6), dtype=np.float32 ) >>> b.reshape( a.shape ) array([[ 0., 0., 0.], [ 0., 0., 0.]], dtype=float32) >>> b.reshape( *(a.shape) ) array([[ 0., 0., 0.], [ 0., 0., 0.]], dtype=float32) *(a.shape)好像没作用。。。 |
2
icedx 2015-10-29 18:28:36 +08:00 via Android 4
*(a.shape) 是说把接收到的元组 a.shape 解包传给 top[top_ind].reshape()
|
3
aheadlead 2015-10-29 18:35:43 +08:00 4
def func(a, b, c):
print a, b, c T = (1, 2, 3) 下面两个效果是一样的 func(1, 2, 3) func(*T) |
4
northisland OP |
5
Kisesy 2015-10-29 19:28:20 +08:00
三个点,就是省略,在代码中不能写的,只有输出时才这样显示
不过用在 py3 的某些地方,例如: def function(): ... 代替 pass |
6
thinker3 2015-10-29 20:11:46 +08:00 1
>>> a[...] = 'a'
>>> a {Ellipsis: 'a'} |
7
northisland OP 发现了第二个例子的一点点用法
( 这不是 python 通用的规则,是万恶的 numpy 库定义的“黑话” ) >>> x = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> x = x.reshape( (2, 5) ) 定义一个 2x5 的矩阵 >>> x.reshape( (2, 5) ) array([[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]]) >>> x[..., 4] 这就相当与取矩阵第二唯独( x )的第 4 顺序的向量, so array([4, 9]) >>> x[1, ...] array([5, 6, 7, 8, 9]) 也是一样,跟:用法差不多 >>> x[1, :] array([5, 6, 7, 8, 9]) >>> x[:, 1] array([1, 6]) 表面测试而已 |
8
wynemo 2015-10-29 22:11:53 +08:00
http://blog.brush.co.nz/2009/05/ellipsis/ 这里好像有个然并卵的例子
|
9
cszhiyue 2015-10-30 08:22:54 +08:00
@northisland 错别字。。维度 相当于
|
10
master13 2015-10-30 09:15:13 +08:00
我与大数据不共戴天!
|
11
northisland OP import numpy as np
a = np.array([[8, 9], [6, 4]]) b = np.zeros((2, 2), dtype=a.dtype) b[:] = a[:] c = np.zeros((2, 2), dtype=a.dtype) c[:] = a d = np.zeros((2, 2), dtype=a.dtype) d[...] = a e = np.zeros((2, 2), dtype=a.dtype) e = a 其中,b, c, d 的赋值都是等效的 e 是直接引用 所以咯,...是 numpy 自定义的“黑话” |