簡體   English   中英

高效地將單個二維陣列堆疊到 3D 中

[英]Stacking a single 2D array into 3D efficiently

我有一個 2D 數組,我想將相同版本的數組堆疊到第三維中,特別是axis=1 下面的代碼完成了這項工作,但是對於堆疊成長度為 300 的第三維的大小為(300,300)的二維數組來說非常慢。

arr_2d = arr_2d.reshape(arr_2d.shape[0],arr_2d.shape[1],1)
arr_3d = np.empty((sampling,sampling,sampling)) # allocate space 
arr_3d = [arr_3d[:,:,i]==arr_2d for i in range(sampling)]

有沒有更好、更有效的方法來做到這一點?

在添加新的第三維以堆疊后,您可以使用 numpy.repeat:

import numpy as np
arr = np.random.rand(300, 300)
# arr.shape => (300, 300)
dup_arr = np.repeat(arr.reshape(*arr.shape, 1), repeats=10, axis=-1)
# dup_arr.shape => (300, 300, 10)

正如@xdurch0 所評論的那樣,由於您要沿最后一個維度堆疊副本,因此您還可以使用 numpy.tile:

dup_arr = np.tile(arr.reshape(*arr.shape, 1), reps=10)
# dup_arr.shape => (300, 300, 10)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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