web-dev-qa-db-ja.com

Python)でリストを列ベクトルに変換する

リストXを入力として受け取り、Xに対応する列ベクトルを出力する関数があるかどうか疑問に思いましたか?

(私は周りを見回しましたが、次のように思われます:np.matrix(X).T

3
Mkach

Pythonリストをnumpy列ベクトルに変換する場合は、ndmin引数をarrayコンダクターに使用できます。

col_vec = np.array(X, ndmin=2)

配列を作成するだけで、直接転置できない1D配列が得られます。

a = np.array(X)
a is a.T

ただし、1Dベクトルを列に変換する方法はいくつかあります。

col_vec = a.reshape(-1, 1)

そして

col_vec = a[np.newaxis, :]

リストがすでに配列になっている後は、かなり一般的なイディオムです。

col_vec = np.reshape(X, (-1, 1))

そして

col_vec = np.expand_dims(X, -1)

生のリストでも機能します。

P.S. np.matrixには近づかないでください。完全に非推奨ではないにしても、非常に古く、制限されています。

2
Mad Physicist

関数はないと思いますが、専用のオブジェクトnp.c_があります。

>>> X = list('hello world')
>>> X
['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
np.c_[X]
array([['h'],
       ['e'],
       ['l'],
       ['l'],
       ['o'],
       [' '],
       ['w'],
       ['o'],
       ['r'],
       ['l'],
       ['d']], dtype='<U1')

行うこともできます(余分な角括弧に注意してください)

>>> np.array([X]).T
2
Paul Panzer

類似しているが異なる:

mylist=[2,3,4,5,6]

method1:

np.array([[i] for i in mylist])

出力:

array([[2],
       [3],
       [4],
       [5],
       [6]])

方法2:

np.array(mylist).reshape(len(mylist),1)

output:
    array([[2],
           [3],
           [4],
           [5],
           [6]])
0
Grant Shannon

リストはPythonのネイティブ型ですが、numpy配列はnumpyオブジェクトです。最初にリストをnumpy配列に変換する必要があります。次のようなことができます。

x = list(range(5))
print(x)

[0、1、2、3、4]

x_vector = np.asarray(x)

array([0、1、2、3、4])

さて、Pythonは、行ベクトルと列ベクトルの違いを知りません。これは、ベクトルの使用方法次第です。現在のベクトルは1x5です。5x1が必要な場合は、どちらかで転置することができます

x_vector.T

または

np.transpose(x_vector)

ただし、これは1D行列であるため、転置はメモリ内の転置されていないベクトルと同じです。

0
JahKnows