Numpy에서 특정 조건의 열을 추출하고 싶습니다.

조회수 1294회

Numpy에서 특정 조건의 열을 추출하고 싶습니다.

데이터 셋에 Pandas를 이용하여 Numpy 배열을 얻었습니다.

[[0.2  0.   0.   ... 0.   2.   2.  ]
 [0.2  0.   0.   ... 0.   2.   2.  ]
 [0.55 0.   0.   ... 0.   0.   0.  ]
 [0.43 0.   0.   ... 0.   2.   2.  ]
 [0.21 0.   0.   ... 0.   2.   1.  ]
 [0.37 0.   0.   ... 0.   2.   2.  ]]

여기에서 각 열의 마지막 element (0,1,2)를 기준으로 파일을 수식을 이용해서 재분류 하고 싶은데 어떻게 해야 되나요?

ex)

print(train0) 
 [ [0.55 0.   0.   ... 0.   0.   0.  ]]

print(train1) 
 [ [0.21 0.   0.   ... 0.   2.   1.  ]]

print(train2) 
 [[0.2  0.   0.   ... 0.   2.   2.  ]
 [0.2  0.   0.   ... 0.   2.   2.  ]
 [0.43 0.   0.   ... 0.   2.   2.  ]
 [0.37 0.   0.   ... 0.   2.   2.  ]]

1 답변

  • 좀 무식하게 하면 이렇게 가능할 것 같아요.

    >>> train = np.random.randint(0, 3, (15, 5))
    >>> train
    array([[1, 0, 2, 0, 2],
           [0, 1, 0, 1, 2],
           [0, 2, 0, 1, 0],
           [0, 2, 0, 0, 1],
           [2, 0, 0, 1, 0],
           [2, 2, 0, 0, 0],
           [2, 2, 0, 1, 0],
           [1, 2, 1, 0, 0],
           [1, 2, 2, 1, 1],
           [2, 2, 2, 0, 1],
           [0, 2, 0, 0, 2],
           [0, 0, 0, 1, 2],
           [2, 1, 2, 2, 0],
           [0, 1, 1, 2, 1],
           [0, 2, 2, 0, 0]])
    >>> t = dict()
    >>> for row in train:
        cond = tuple(row[-3:])
        t[cond] = t.get(cond, [])
        t[cond].append(row)
    
    
    >>> for k, v in t.items():
        t[k] = np.array(t[k])
        print('--', k)
        print(t[k])
    
    
    -- (2, 0, 2)
    [[1 0 2 0 2]]
    -- (0, 1, 2)
    [[0 1 0 1 2]
     [0 0 0 1 2]]
    -- (0, 1, 0)
    [[0 2 0 1 0]
     [2 0 0 1 0]
     [2 2 0 1 0]]
    -- (0, 0, 1)
    [[0 2 0 0 1]]
    -- (0, 0, 0)
    [[2 2 0 0 0]]
    -- (1, 0, 0)
    [[1 2 1 0 0]]
    -- (2, 1, 1)
    [[1 2 2 1 1]]
    -- (2, 0, 1)
    [[2 2 2 0 1]]
    -- (0, 0, 2)
    [[0 2 0 0 2]]
    -- (2, 2, 0)
    [[2 1 2 2 0]]
    -- (1, 2, 1)
    [[0 1 1 2 1]]
    -- (2, 0, 0)
    [[0 2 2 0 0]]
    

    pandas dataframe 형태라면, 마지막 3개를 묶은 컬럼을 하나 만들고, 그 컬럼으로 groupby 하겠고요.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)