2016-03-31 10 views
0

1次元配列をいくつでも取り、それらを列ベクトルとして「列スタック」したいと思います。これは、複数のそのような配列のリストを持っているときにcolumn_stackを使って十分にうまく動作しますが、そのような配列が1つしかない場合、column_stackは効果がありません。多くの1次元配列を「列スタック」するNumPythonic方法

私は、これは

np.array(np.matrix(j).T) 

で動作するように取得することができますが、これは物事を行くための明確な方法はないようです。

[1, 2, 3, 4]のような1つのリストを列挙するにはどうすればよいでしょうか?

答えて

1

それは私の作品:

In [629]: np.column_stack([[1,2,3]]) 
Out[629]: 
array([[1], 
     [2], 
     [3]]) 

あなたはこれを行うこと万が一、ありますか?

In [631]: np.column_stack([1,2,3]) 
Out[631]: array([[1, 2, 3]]) 

これはスカラーの列スタックを実行しており、実質的に0dの配列です。そのコードに

ルック:

arrays = [] 
for v in tup: 
    arr = array(v, copy=False, subok=True) 
    if arr.ndim < 2: 
     arr = array(arr, copy=False, subok=True, ndmin=2).T 
    arrays.append(arr) 
return _nx.concatenate(arrays, 1) 

arrayは、(アレイにリストを変換)もまた、実質的に、入力リストの各要素を通過、および1D(又は0D)場合、その後、再度渡しarrayを介して、それが2dであることを確認してください(その後に転置が続きます)。リスト

のリストについては、

np.atleast_2d(np.array([1,2,3])).T 
np.array([1,2,3])[:,None] 
np.array([1,2,3]).reshape(-1,1) 

In [644]: np.atleast_2d([[1,2],[3,4],[4,5]]).T 
Out[644]: 
array([[1, 3, 4], 
     [2, 4, 5]]) 

atleast_2dのコードを見てみましょう:

は、多くの2D列ベクトルに1次元配列を回すの方法があります。

+0

私は 'np.column_stack([1,2,3]) 'を発行しています。 – orome

+0

あなたの入力は配列またはリストのリストになっています。あなたはスカラーのリストを与えます。 – hpaulj

+0

はい、正確です。それが問題です。スカラーのリストかそのようなリストのリストかもしれない入力を扱うNumPythonicな方法は何ですか? – orome