如何连接2 np.ndarray's?

时间:2016-02-04 23:53:15

标签: python opencv numpy

我使用openCV生成如下所示的轮廓:

array([[[227, 762]],

       [[228, 762]],

       [[229, 763]],

       [[228, 764]],

       [[229, 765]],

       [[228, 766]],

       [[227, 766]],

       [[228, 766]],

       [[229, 765]],

       [[228, 764]],

       [[229, 763]],

       [[229, 762]]], dtype=int32)

此轮廓的类型为np.ndarray

当我检查cnt.shape时,我得到(12,1,2),表明这比简单的12 x 2矩阵更复杂。

这意味着当我尝试:

In [104]: new = np.array([1,2])

In [105]: type(new)
Out[105]: numpy.ndarray

In [106]: X = np.vstack((ex,new))
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-106-5ceb3fcd9619> in <module>()
----> 1 X = np.vstack((ex,new))

/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/core/shape_base.pyc in vstack(tup)
    226
    227     """
--> 228     return _nx.concatenate([atleast_2d(_m) for _m in tup], 0)
    229
    230 def hstack(tup):

ValueError: all the input arrays must have same number of dimensions

你可以看到new和ex都属于同一类型,我希望它们都有2列,因此我可以垂直堆叠它们,但是唉,不......我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

要将其转换为12x2,只需:

yourarray.reshape(12, 2)

这让我:

array([[227, 762],
       [228, 762],
       [229, 763],
       [228, 764],
       [229, 765],
       [228, 766],
       [227, 766],
       [228, 766],
       [229, 765],
       [228, 764],
       [229, 763],
       [229, 762]])

我建议简要介绍numpy的array方法 - 有很多潜在有用的东西。