Jim*_*Suh 5 python numpy python-2.7
我对 numpy 真的很陌生,目前对重塑中的负值感到困惑。
将 numpy 导入为 np
a=np.arange(6)
c=a.reshape(1,3,2)
d=a.reshape(-1,3,2)
e=a.reshape(-1,1,2)
print c
print
print d
print
print e
Run Code Online (Sandbox Code Playgroud)
它返回
[[[0 1]
[2 3]
[4 5]]]
[[[0 1]
[2 3]
[4 5]]]
[[[0 1]]
[[2 3]]
[[4 5]]]
Run Code Online (Sandbox Code Playgroud)
这里的问题是,当比较 c 和 d 时,根本没有区别。然而,在 e 中,每行之间形成了额外的空行。那么,-1 在 reshape 函数中究竟做了什么,为什么它会导致 e 中的每一行之间出现空行?谢谢 !
当您添加-1到 numpy 中的轴时,它只会将其他所有内容放入该轴中。a也就是说,对于shape 的数组(10, 10),将应用以下操作:
>>> a.reshape(-1, 10, 10) # a is (1, 10, 10)
>>> a.reshape( 1, 10, 10) # a is also (1, 10, 10)
>>> a.reshape(-1, 5, 5) # a is (4, 5, 5), since 4 * 5 * 5 = 100
>>> a.reshape(-1, 5, 10) # a is (2, 5, 10) since 2 * 5 * 10 = 100
Run Code Online (Sandbox Code Playgroud)
也就是说,在重塑时元素的总数必须相同,因此添加-1到形状中只是让 numpy 为您计算剩余的值,以便轴的乘积仍然与之前的元素数量匹配。
c和的区别e不仅在于额外的空间,还在于每对周围的额外支架,即
[2 3] vs [[2 3]]
Run Code Online (Sandbox Code Playgroud)
这是因为 的形状c是[1, 3, 2],而 的形状e是[3, 1, 2]。的形状d也是[1, 3, 2],因此c和d相等。
当你在形状中放入 -1 时,numpy 会从其他维度推断它,即将 -1 替换为product of all dimensions of a / product of all specified shapes
| 归档时间: |
|
| 查看次数: |
3744 次 |
| 最近记录: |