numpy 提供了三个方便的例程将数组转换为至少 1D、2D 或 3D 数组,例如通过numpy.atleast_3d
我需要一个等价的维度:atleast_4d
. 我可以想到使用嵌套 if 语句的各种方法,但我想知道是否有更有效和更快的方法来返回相关数组。在您的回答中,如果可以的话,我很想看看执行速度的估计(O(n))。
numpy 提供了三个方便的例程将数组转换为至少 1D、2D 或 3D 数组,例如通过numpy.atleast_3d
我需要一个等价的维度:atleast_4d
. 我可以想到使用嵌套 if 语句的各种方法,但我想知道是否有更有效和更快的方法来返回相关数组。在您的回答中,如果可以的话,我很想看看执行速度的估计(O(n))。
该np.array
方法有一个可选的ndmin
关键字参数:
指定结果数组应具有的最小维数。将根据需要预先添加到形状以满足此要求。
如果你也设置copy=False
,你应该接近你所追求的。
作为自己动手做的替代方案,如果您想要额外的维度尾随而不是领先:
arr.shape += (1,) * (4 - arr.ndim)
为什么不能像这样简单:
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
并在末尾附加一个额外的维度,否则只返回数组不变。