Numpy配列を使用して「列」ベクトルを連結したいのですが、numpyはデフォルトですべての配列を行ベクトルとして見るため、np.hstack
およびnp.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]]) ##
より良い方法はありますか?
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
しかし。ドキュメントにあるように。
私は次を試しました。これがあなたがしていることに対して十分であると思いますか?
>>> 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]])