Python 为什么numpy.resize不';t与'-1';比如numpy.重塑?
我了解到Python 为什么numpy.resize不';t与'-1';比如numpy.重塑?,python,numpy,resize,reshape,Python,Numpy,Resize,Reshape,我了解到numpy.reformate并不能真正改变数组的形状。好啊我可以使用numpy.resize。那很好 我的问题是为什么使用“np.resize”时“-1”表示法不起作用?就像“np.重塑”一样 myarray = np.arange(16) myarray.resize((4,-1)) 给我 --------------------------------------------------------------------------- ValueError
numpy.reformate
并不能真正改变数组的形状。好啊我可以使用numpy.resize
。那很好
我的问题是为什么使用“np.resize”时“-1”表示法不起作用?就像“np.重塑”一样
myarray = np.arange(16)
myarray.resize((4,-1))
给我
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-606-aa09b20c947a> in <module>
1 myarray = np.arange(16)
2
----> 3 myarray.resize((4,-1))
ValueError: negative dimensions not allowed
---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在里面
1 myarray=np.arange(16)
2.
---->3 myarray.resize((4,-1))
ValueError:不允许负维度
正如我所检查的,resize不允许负参数。
这是重塑(和其他一些方法,但不是调整大小)的一个功能
如果要创建一个新的数组,请将代码更改为:
myNewArray = myarray.reshape((4,-1)).copy()
另一种就地更改形状的解决方案:
myarray.shape = (4, -1)
在这里,您可以将-1作为新形状元组的一个元素传递。由于重塑(方法或函数)不会更改元素的总数,因此它可以安全地计算一个维度(给定其他维度)
resize
可以更改元素的总数,因此无法安全地对所需的尺寸进行任何假设
查看代码,无论是在其他numpy
函数中,还是在答案中,您都会发现restrape
被广泛使用。它没有在适当的位置运行这一事实通常不是问题。它返回一个视图
(如果可能),因此时间不是问题
由于resize
可以更改元素的数量,因此它可能更危险(但有时更有用)。请记住,函数表单填充的值与方法表单不同
我经常使用
arr = np.arange(24).reshape(2,3,4)