1. ホーム
  2. python

[解決済み] 2次元のnumpy配列をリストのリストに変換する [重複].

2022-12-04 23:55:27

質問

外部モジュール( libsvm ) を使っていますが、これはnumpyの配列をサポートしておらず、タプル、リスト、ディクスのみをサポートしています。しかし、私のデータは2次元のnumpy配列にあります。どのように私はそれをpythonic方法、すなわち、ループなしで変換することができます。

>>> 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

どのように解決するのですか?

行列を単純にリストにキャストするには matrix.tolist() でリストにキャストできます。

>>> 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'>