[英](Python Numpy) How can I create new 3D array from given 2D array?
我想做這樣的事情:
我給出一個二維 numpy 數組:
[[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9]]
我想得到一個 3D numpy 數組:
[[[1, 1, 1],
[2, 2, 2],
[3, 3, 3]],
[[4, 4, 4],
[5, 5, 5],
[6, 6, 6]],
[[7, 7, 7],
[8, 8, 8],
[9, 9, 9]]]
numpy 是否有 function 可以進行這種轉換?
可以使用np.tile
。 在此之前,需要在數組末尾添加一個維度。
In [28]: x = np.array([[ 1, 2, 3],
...: [ 4, 5, 6],
...: [ 7, 8, 9]])
In [29]: np.tile(x[..., None], 3)
Out[29]:
array([[[1, 1, 1],
[2, 2, 2],
[3, 3, 3]],
[[4, 4, 4],
[5, 5, 5],
[6, 6, 6]],
[[7, 7, 7],
[8, 8, 8],
[9, 9, 9]]])
首先使用arr[:, :, np.newaxis]
擴展二維數組的維度,這會將維度從(3, 3)
更改為(3, 3, 1)
。 現在沿第三維重復這個 3D 數組。
利用:
arr = np.repeat(arr[:, :, np.newaxis], 3, -1)
Output:
>>> np.repeat(arr[:, :, np.newaxis], 3, -1)
array([[[1, 1, 1],
[2, 2, 2],
[3, 3, 3]],
[[4, 4, 4],
[5, 5, 5],
[6, 6, 6]],
[[7, 7, 7],
[8, 8, 8],
[9, 9, 9]]])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.