5

numpy 提供了三个方便的例程将数组转换为至少 1D、2D 或 3D 数组,例如通过numpy.atleast_3d

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

4

2 回答 2

9

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

指定结果数组应具有的最小维数。将根据需要预先添加到形状以满足此要求。

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


作为自己动手做的替代方案,如果您想要额外的维度尾随而不是领先:

arr.shape += (1,) * (4 - arr.ndim)
于 2013-04-11T07:05:52.387 回答
1

为什么不能像这样简单:

import numpy as np
def atleast_4d(x):
    if x.ndim < 4:
        y = np.expand_dims(np.atleast_3d(x), axis=3)
    else:
        y = x

    return y

IE。如果维数小于四,则调用atleast_3d并在末尾附加一个额外的维度,否则只返回数组不变。

于 2013-04-11T05:37:16.203 回答