簡體   English   中英

(Python Numpy)如何從給定的二維數組創建新的 3D 數組?

[英](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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM