복붙노트

[PYTHON] Numpy에서 어떻게 2-D 배열을 압축 할 수 있을까요?

PYTHON

Numpy에서 어떻게 2-D 배열을 압축 할 수 있을까요?

예를 들어 2 배열이 있습니다.

a = array([[0, 1, 2, 3],
           [4, 5, 6, 7]])
b = array([[0, 1, 2, 3],
           [4, 5, 6, 7]])

어떻게하면 우편 번호를 얻을 수 있습니까?

c = array([[(0,0), (1,1), (2,2), (3,3)],
           [(4,4), (5,5), (6,6), (7,7)]])

?

해결법

  1. ==============================

    1.dstack을 사용할 수 있습니다.

    dstack을 사용할 수 있습니다.

    >>> np.dstack((a,b))
    array([[[0, 0],
            [1, 1],
            [2, 2],
            [3, 3]],
    
           [[4, 4],
            [5, 5],
            [6, 6],
            [7, 7]]])
    

    튜플을 가져야하는 경우 :

    >>> np.array(zip(a.ravel(),b.ravel()), dtype=('i4,i4')).reshape(a.shape)
    array([[(0, 0), (1, 1), (2, 2), (3, 3)],
           [(4, 4), (5, 5), (6, 6), (7, 7)]],
          dtype=[('f0', '<i4'), ('f1', '<i4')])
    

    Python 3 이상에서는 zip iterator 객체를 확장해야합니다. 이것은 매우 비효율적입니다.

    >>> np.array(list(zip(a.ravel(),b.ravel())), dtype=('i4,i4')).reshape(a.shape)
    array([[(0, 0), (1, 1), (2, 2), (3, 3)],
           [(4, 4), (5, 5), (6, 6), (7, 7)]],
          dtype=[('f0', '<i4'), ('f1', '<i4')])
    
  2. ==============================

    2.

    np.array([zip(x,y) for x,y in zip(a,b)])
    
  3. from https://stackoverflow.com/questions/17960441/in-numpy-how-to-zip-two-2-d-arrays by cc-by-sa and MIT license