在Python中将数组调整为其他形状

Dan*_*iel 1 python arrays resize numpy reshape

我有以下数组:

a = np.random.rand(5,2)
a

array([[0.98736372, 0.07639041],
       [0.45342928, 0.4932295 ],
       [0.75789786, 0.48546238],
       [0.85854235, 0.74868237],
       [0.13534155, 0.79317482]])
Run Code Online (Sandbox Code Playgroud)

我想调整它的大小,以便将它分为2个批次,每个批次包含三个元素(根据需要添加零):

array([[[0.98736372, 0.07639041],
       [0.45342928, 0.4932295 ],
       [0.75789786, 0.48546238]],
       [[0.85854235, 0.74868237],
       [0.13534155, 0.79317482],
       [0, 0]]])
Run Code Online (Sandbox Code Playgroud)

我已经尝试过了,但是它返回None:

a = a.copy()
a.resize((2,3,2), refcheck = False)
Run Code Online (Sandbox Code Playgroud)

我相信.reshape不会提供解决方案,因为它无法填充0以符合所需的数组尺寸。

bco*_*a12 5

使用numpy.resize,您必须像这样使用:

import numpy as np
a = np.random.rand(5,2)
b = np.resize(a, (2,3,2))
Run Code Online (Sandbox Code Playgroud)

否则,您可以使用object方法获得相同的结果,如下所示:

import numpy as np
a = np.random.rand(5,2)
a.np.resize(2,3,2)
b = a.copy()
Run Code Online (Sandbox Code Playgroud)

请注意,第一个返回ndarray,最后一个返回None,因为它更改了对象本身。有关更多信息,请查看numpy.resize文档

  • 谢谢!从a.np.resize(shape)中删除np时,只有object方法起作用。第一种方法不起作用(文档提出了一个事实,即np.resize(shape)与a.resize(shape)不同。 (3认同)