web-dev-qa-db-ja.com

PythonでNumpy Matrixからリストを作成する方法

Numpyのdot()関数を使用して、3x3の行列と1x3のnumpy.arrayを乗算します。出力は、たとえば次のとおりです。

[[0.16666667 0.66666667 0.16666667]]

タイプは次のとおりです。

<class 'numpy.matrixlib.defmatrix.matrix'>

これをリストに変換するにはどうすればよいですか。結果は常に1x3の行列になることがわかっているので、それらのリストの2つのピアソン距離を計算するために後でループできるようにする必要があるため、リストに変換する必要があります。

要約すると、このマトリックスからリストを作成するにはどうすればよいですか?

39
Javaaaa

これを行う最適な方法ではないかもしれませんが、次のように動作します:

a = numpy.matrix([[ 0.16666667, 0.66666667, 0.16666667]])
list(numpy.array(a).reshape(-1,))

または

numpy.array(a).reshape(-1,).tolist()

または

numpy.array(a)[0].tolist()
44
JoshAdel

aが行列の場合、試してください

a.ravel().tolist()

ただし、繰り返し処理するためにリストに変換する必要はありません。

15
Sven Marnach

マトリックスオブジェクトで tolist() メソッドを使用します。

>>> import numpy
>>> m = numpy.matrix([1, 2, 3])
>>> type(m)
<class 'numpy.core.defmatrix.matrix'>
>>> m.tolist()
[[1, 2, 3]]
14
tito

別の方法:

>>> import numpy as np
>>> m = np.matrix([1,2,3])
>>> np.array(m).flatten().tolist()
[1,2,3]
10
Alejandro

この単純なアプローチを試してください。 1D配列で動作しますが、高次元ではわかりません。

import mumpy as np         # to create a numpy array example
a = np.array([1,2.5,3])    # your 1D numpy array
b = [i for i in a]        # your list out of the original numpy array
1
FerYepes

getA1()が仕事をすることができると思います。
ドキュメントから:

getA1()

Selfを平坦化されたndarrayとして返します。

Np.asarray(x).ravel()と同等

から https://docs.scipy.org/doc/numpy/reference/generated/numpy.matrix.getA1.html

1
Robert Ribas

なぜ単純ではない:

list(a.flat)

例えば:

>>> import numpy as np
>>> a = np.matrix([[ 0.16666667, 0.66666667, 0.16666667]])
>>> a
matrix([[ 0.16666667,  0.66666667,  0.16666667]])
>>> a.flat
<numpy.flatiter object at 0x0000000002DE8CC0>
>>> a.flat.tolist()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'numpy.flatiter' object has no attribute 'tolist'
>>> list(a.flat)
[0.16666666999999999, 0.66666667000000002, 0.16666666999999999]
1
yourstruly
m = numpy.matrix([[ 0.16666667, 0.66666667, 0.16666667]])
a = numpy.array(m)[0]

for i in a:
    print i

結果として

0.16666667
0.66666667
0.16666667
1
Hugh Bothwell
import numpy as np
a = np.matrix([[1,2,3,4]])
b = map(float, a.transpose())

このコードスニペットは、組み込み関数 "float"(何かを浮動小数点数に変換する)をaのすべての要素に適用します。 aの最初の要素は配列そのものなので、すべての数字がaの要素になるように転置する必要があります。この例では、a.transpose()はnp.matrix([[1]、[2]、[3]、[4]])と同等です。

0
user7358

私はここに来て、numpy行列を典型的な2Dリストに変換する方法を探しました。

Numpy行列mの場合:

my_2d_list = map(list, list(m.A))

1 x n行列mから1次元のリストが必要な場合:

my_1d_list = list(list(m.A)[0])
0
Aaron Feldman