如何返回至少4D的数组:有效的方法来模拟numpy.atleast_4d

DrS*_*SAR 2 python arrays numpy multidimensional-array

numpy提供了三个方便的例程来将数组转换为至少一维,二维或三维数组,例如通过numpy.atleast_3d

我还需要一个维度的等价物:atleast_4d.我可以想到使用嵌套if语句的各种方法,但我想知道是否有更有效和更快速的方法返回有问题的数组.在你的回答中,如果可以的话,我有兴趣看到执行速度的估计值(O(n)).

Jai*_*ime 6

np.array方法有一个可选的ndmin关键字参数:

指定结果数组应具有的最小维数.根据需要,将根据需要预先设置形状.

如果你也设置了copy=False你应该接近你所追求的.


作为一个自己动手的替代方案,如果你想要额外的尺寸尾随而不是领先:

arr.shape += (1,) * (4 - arr.ndim)
Run Code Online (Sandbox Code Playgroud)

  • 你自己动手的方法很漂亮.我花了一段时间来解码.对于记录:```(1,)*(4 - arr.ndim)```创建一个元组.如果```arr.ndim```大于4或适当长度,则元组为空.这些维度只是标记在数组上.美丽. (2认同)