リストX
を入力として受け取り、X
に対応する列ベクトルを出力する関数があるかどうか疑問に思いましたか?
(私は周りを見回しましたが、次のように思われます:np.matrix(X).T
)
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
には近づかないでください。完全に非推奨ではないにしても、非常に古く、制限されています。
関数はないと思いますが、専用のオブジェクト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
類似しているが異なる:
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]])
リストは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行列であるため、転置はメモリ内の転置されていないベクトルと同じです。