我有一個非常簡單的問題,但我就是想不通。我想將一堆 2D numpy 陣列沿第三維(深度)一個一個堆疊成一個 3D 陣列。
我知道我可以np.stack()這樣使用:
d1 = np.arange(9).reshape(3,3)
d2 = np.arange(9,18).reshape(3,3)
foo = np.stack((d1,d2))
我得到
print(foo.shape)
>>> (2, 3, 3)
print(foo)
>>> [[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]]
[[ 9 10 11]
[12 13 14]
[15 16 17]]]
到目前為止,這幾乎是我想要的。不過,我在這里有點困惑,深度維度在這里被索引為第一個。但是,我現在想沿第一個維度添加新的 3x3 陣列(?)(這讓我很困惑),就像這樣。
d3 = np.arange(18,27).reshape(3,3)
foo = np.stack((foo,d3))
這不起作用。我知道現在陣列的尺寸有問題,但vstack, hstack, dstack這里沒有作業。我現在想要的幾乎就是這個。
print(foo)
>>> [[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]]
[[ 9 10 11]
[12 13 14]
[15 16 17]]
[[18 19 20]
[21 22 23]
[24 25 26]]]
然后就可以添加更多這樣的陣列。
當然,我查看了有關此主題的一些問題,但我仍然無法理解 3D 陣列(尤其是 np.dstack()),并且不知道如何解決我的問題。
uj5u.com熱心網友回復:
為什么不直接將 d1、d2、d3 添加到單個堆疊中(np.stack((d1, d2, d3)))?重復連接陣列通常是不好的做法。
在任何情況下,您都可以使用:
np.stack((*foo, d3))
或者:
np.vstack((foo, d3[None]))
輸出:
array([[[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8]],
[[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17]],
[[18, 19, 20],
[21, 22, 23],
[24, 25, 26]]])
uj5u.com熱心網友回復:
您正在尋找np.vstack:
np.vstack((d1,d2,d3)).reshape(3,3,3)
或迭代地
foo = np.vstack((d1, d2))
foo = np.vstack((foo, d3))
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/485057.html
