Contruct 3d array in numpy from existing 2d array

前端 未结 3 762
终归单人心
终归单人心 2021-02-18 23:57

During preparing data for NumPy calculate. I am curious about way to construct:

myarray.shape => (2,18,18)

from:

d1.shape          


        
相关标签:
3条回答
  • 2021-02-19 00:22

    Just doing d3 = array([d1,d2]) seems to work for me:

    >>> from numpy import array
    >>> # ... create d1 and d2 ...
    >>> d1.shape
    (18,18)
    >>> d2.shape
    (18,18)
    >>> d3 = array([d1, d2])
    >>> d3.shape
    (2, 18, 18)
    
    0 讨论(0)
  • 2021-02-19 00:30

    hstack and vstack do no change the number of dimensions of the arrays: they merely put them "side by side". Thus, combining 2-dimensional arrays creates a new 2-dimensional array (not a 3D one!).

    You can do what Daniel suggested (directly use numpy.array([d1, d2])).

    You can alternatively convert your arrays to 3D arrays before stacking them, by adding a new dimension to each array:

    d3 = numpy.vstack([ d1[newaxis,...], d2[newaxis,...] ])  # shape = (2, 18, 18)
    

    In fact, d1[newaxis,...].shape == (1, 18, 18), and you can stack both 3D arrays directly and get the new 3D array (d3) that you wanted.

    0 讨论(0)
  • 2021-02-19 00:33
    arr3=np.dstack([arr1, arr2])
    

    arr1, arr2 are 2d array shape (256,256), arr3: shape(256,256,2)

    0 讨论(0)
提交回复
热议问题