25

numpy 配列を使用して「列」ベクトルを連結したいのですが、numpy はデフォルトですべての配列を行ベクトルとして認識し、どの軸np.hstacknp.concatenate沿っても役に立たないためです (どちらもnp.transpose期待どおりではありませんでした)。

a = np.array((0, 1))
b = np.array((2, 1))
c = np.array((-1, -1))

np.hstack((a, b, c))
# array([ 0,  1,  2,  1, -1, -1])  ## Noooooo
np.reshape(np.hstack((a, b, c)), (2, 3))
# array([[ 0,  1,  2], [ 1, -1, -1]]) ## Reshaping won't help

1つの可能性(しかし面倒すぎる)は

np.hstack((a[:, np.newaxis], b[:, np.newaxis], c[:, np.newaxis]))
# array([[ 0,  2, -1], [ 1,  1, -1]]) ##

より良い方法はありますか?

4

2 に答える 2

58

numpy.column_stackはあなたが望むことをするべきだと思います例:

>>> a = np.array((0, 1))
>>> b = np.array((2, 1))
>>> c = np.array((-1, -1))
>>> numpy.column_stack((a,b,c))
array([[ 0,  2, -1],
       [ 1,  1, -1]])

それは本質的に等しい

>>> numpy.vstack((a,b,c)).T

けれど。ドキュメントに記載されているとおりです。

于 2013-02-07T14:07:15.403 に答える
3

以下を試しました。これがあなたがしていることに十分であることを願っていますか?

>>> np.vstack((a,b,c))
array([[ 0,  1],
       [ 2,  1],
       [-1, -1]])
>>> np.vstack((a,b,c)).T
array([[ 0,  2, -1],
       [ 1,  1, -1]])
于 2013-02-06T23:49:33.470 に答える