복붙노트

[PYTHON] 목록의 목록으로 2 차원 numpy 배열을 변환 [중복]

PYTHON

목록의 목록으로 2 차원 numpy 배열을 변환 [중복]

numpy 배열을 지원하지 않는 외부 모듈 (libsvm)을 사용합니다. 튜플, 목록 및 dicts 만 지원합니다. 하지만 제 데이터는 2 차원 배열입니다. 어떻게 그것을 파이썬 방법, 일명 루프없이 변환 할 수 있습니다.

>>> import numpy
>>> array = numpy.ones((2,4))
>>> data_list = list(array)
>>> data_list
[array([ 1.,  1.,  1.,  1.]), array([ 1.,  1.,  1.,  1.])]

>>> type(data_list[0])
<type 'numpy.ndarray'>  # <= what I don't want

# non pythonic way using for loop
>>> newdata=list()
>>> for line in data_list:
...     line = list(line)
...     newdata.append(line)
>>> type(newdata[0])
<type 'list'>  # <= what I want

해결법

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

    1.

    >>> import numpy
    >>> a = numpy.ones((2,4))
    >>> a
    array([[ 1.,  1.,  1.,  1.],
           [ 1.,  1.,  1.,  1.]])
    >>> a.tolist()
    [[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]
    >>> type(a.tolist())
    <type 'list'>
    >>> type(a.tolist()[0])
    <type 'list'>
    
  2. from https://stackoverflow.com/questions/9721884/convert-2d-numpy-array-into-list-of-lists by cc-by-sa and MIT license