gpt4 book ai didi

python - 在 numpy 中陷入 dstack 和 dsplit 困境

转载 作者:行者123 更新时间:2023-11-30 23:26:32 24 4
gpt4 key购买 nike

我理解了 hstack 、 hsplit 和 vstack 和 vsplit但我不明白 dstack 和 dsplit 是如何工作的。

根据我的说法,在第三维上串联应该意味着:>

a = 1st 2D matrix
b = 2nd 2D matrix
c = 3rd 2D matrix

d = np.dstack((a, b, c))

d[0] == a
d[1] == b
d[2] == c

现在这应该真正意味着深度堆叠并且确实有意义(至少对我来说)但这种情况并非如此。请帮我可视化 dstack 和 dsplit

谢谢!

最佳答案

我认为您的思考方式是正确的。 IE。想象一下数组垂直堆叠......

喜欢docs说:

Take a sequence of arrays and stack them vertically to make a single array

假设 a、b 和 c 是正方形,并堆叠形成一个立方体。查看第一个维度,d[0](相当于 d[0,:,:])将查看立方体的侧面, d[:,0,:]。第三维度从上面看,例如d[:,:,0]。它有助于使用 .ndim.shape 计算维度和形状的数量。

举例说明:

>>> a =np.ones((3,3))
>>> b =a*2
>>> c =a*3
>>> np.dstack((a, b, c))
>>> a.shape
(3, 3)
>>> a.ndim
2
>>> d.shape
(3, 3, 3)
>>> d.ndim
3
>>> d[0,:,:]
array([[ 1., 2., 3.],
[ 1., 2., 3.],
[ 1., 2., 3.]])
>>> d[:,0,:]
array([[ 1., 2., 3.],
[ 1., 2., 3.],
[ 1., 2., 3.]])
>>> d[:,:,0]
array([[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]])
>>> d[:,:,1]
array([[ 2., 2., 2.],
[ 2., 2., 2.],
[ 2., 2., 2.]])

最后,如果你想“旋转立方体”,你总是可以转置数组:

>>> d.T
array([[[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]],

[[ 2., 2., 2.],
[ 2., 2., 2.],
[ 2., 2., 2.]],

[[ 3., 3., 3.],
[ 3., 3., 3.],
[ 3., 3., 3.]]])

>>> d.T[0]
array([[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]])

编辑

...或者你可以使用rollaxis :

>>> np.rollaxis(d,2)
array([[[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]],

[[ 2., 2., 2.],
[ 2., 2., 2.],
[ 2., 2., 2.]],

[[ 3., 3., 3.],
[ 3., 3., 3.],
[ 3., 3., 3.]]])

关于python - 在 numpy 中陷入 dstack 和 dsplit 困境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22459109/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com