使用负值重塑Numpy形状

2024-04-26 21:16:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我对numpy真的是个新手,现在在Regue中对负值感到困惑。在

将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

它又回来了

^{pr2}$

这里的问题是,当比较c和d时,根本没有区别。然而在e中,每行之间形成额外的空行。那么,-1在整形函数中到底做了什么,为什么它会在e中的每一行之间产生空行呢?谢谢!在


Tags: 函数numpynpprint区别新手空行arange
2条回答

c和{}之间的区别不仅是额外的空间,而且是每一对之间附加的括号,即

[2 3]    vs    [[2 3]]

这是因为c的形状是[1, 3, 2],而{}的形状是{}。d的形状也是[1, 3, 2],这就是c和{}相等的原因。在

当您将-1放入形状中时,numpy从其他维度推断出它,即用product of all dimensions of a / product of all specified shapes替换-1

当您将-1添加到numpy中的一个轴上时,它将只将其他所有放入该轴。对于形状为(10, 10)的数组a,将应用以下操作:

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

也就是说,在重塑形状时,元素的总数必须相同,因此将-1添加到形状中只会让numpy为您计算剩余的值,这样轴的积仍然与前面的元素数量相匹配。在

相关问题 更多 >