在numpy数组中确保至少一定的维度

时间:2015-12-21 18:37:34

标签: python numpy

我的工具包中有以下功能,并且非常依赖它。我发现很难相信这不会是一个笨拙的内置来做到这一点,但我在numpy搜索可能的函数名称,谷歌搜索这个问题的各种解释,并没有发现任何东西。有东西吗?

def project(a, maxdim):
    """
    Return a view of the numpy array <a> that has at least <maxdim>+1
    dimensions (pad a.shape with 1's on the right if necessary).
    """
    if isinstance(a, numpy.matrix) and maxdim > 1: a = numpy.asarray(a)
    else: a = a.view()
    a.shape += (1,) * (maxdim-len(a.shape)+1)
    return a

1 个答案:

答案 0 :(得分:3)

MATLAB,默认的Fortran订单,在右侧自动添加尺寸。 count += line.Count(letter => search == letter); 是默认的C顺序,并且更喜欢将它们附加在左侧。

numpy需要一个np.array参数,根据需要预先设置1。

e.g。

ndmin

有3个In [89]: np.array([1,2,3],ndmin=4).shape Out[89]: (1, 1, 1, 3) 个功能。

np.atleast_?d
{p> In [92]: np.atleast_2d([1,2,3]).shape Out[92]: (1, 3) In [93]: np.atleast_3d([1,2,3]).shape Out[93]: (1, 3, 1) atleast_3d中使用,可能已经明确写入了该用途。

广播时,np.dstack会根据需要添加尺寸;等待他们的帖子需要你做出明确的行动。这只是开发人员选择的默认numpy

numpy

np.ones((3,4,5))+np.zeros((5)) 也会带一个np.array参数

copy