Python numpy関数で混同されやすいstack(),vstack(),hstack(),dstack()およびconcatenate()の簡単な解析
1765 ワード
stack()指定した軸上に大量の配列を積み重ねます
hstack()horizontally水平方向にスタック
vstack()vertical垂直方向にスタック
dstack()depth深さ方向にスタック
concatenate()指定した軸上に少量の配列のスタックを行う
np.concatenate(tup,axis=i)i=0,1,2の場合はそれぞれhstack,vstack,dstackに対応
>>> arrays = [np.random.randn(3, 4) for _ in range(10)]
>>> np.stack(arrays, axis=0).shape
(10, 3, 4)
>>>
>>> np.stack(arrays, axis=1).shape
(3, 10, 4)
>>>
>>> np.stack(arrays, axis=2).shape
(3, 4, 10)
>>>
>>> a = np.array([1, 2, 3])
>>> b = np.array([2, 3, 4])
>>> np.stack((a, b))
array([[1, 2, 3],
[2, 3, 4]])
>>>
>>> np.stack((a, b), axis=-1)
array([[1, 2],
[2, 3],
[3, 4]])
hstack()horizontally水平方向にスタック
>>> a = np.array((1,2,3))
>>> b = np.array((2,3,4))
>>> np.hstack((a,b))
array([1, 2, 3, 2, 3, 4])
>>> a = np.array([[1],[2],[3]])
>>> b = np.array([[2],[3],[4]])
>>> np.hstack((a,b))
array([[1, 2],
[2, 3],
[3, 4]])
vstack()vertical垂直方向にスタック
>>> a = np.array([[1], [2], [3]])
>>> b = np.array([[2], [3], [4]])
>>> np.vstack((a,b))
array([[1],
[2],
[3],
[2],
[3],
[4]])
dstack()depth深さ方向にスタック
>>> a = np.array((1,2,3))
>>> b = np.array((2,3,4))
>>> np.dstack((a,b))
array([[[1, 2],
[2, 3],
[3, 4]]])
>>>
>>> a = np.array([[1],[2],[3]])
>>> b = np.array([[2],[3],[4]])
>>> np.dstack((a,b))
array([[[1, 2]],
[[2, 3]],
[[3, 4]]])
concatenate()指定した軸上に少量の配列のスタックを行う
np.concatenate(tup,axis=i)i=0,1,2の場合はそれぞれhstack,vstack,dstackに対応