循环穿过3D阵列,并添加2D切片n



我有一个3D数组(让它命名a),=(365、28、36)。我认为这个数组是一个3D阵列,其中有365个2D阵列(28,36)相互堆叠。我现在想循环遍历这个3D阵列,每个2D切片应重复8次,然后彼此堆叠。这意味着我最终将拥有一个大小的数组(2920、28、36)。2920来自365*8。

到目前为止,我的尝试一直是这样,但它行不通。谁能帮助解决这个问题?

l = []
for i in range(365):
    for j in range(28):
        for k in range(30):  
            l.extend(repeat(a[i,j,k], 8))
newarray = []
for arr2d in oldarray:
    for _ in range(8):
        newarray.append(arr2d)

python中的数组实际上是列表,这意味着它们是可变长度,因此,您可以做到这一点。oldarray是您的旧3D阵列,newarray是您所需的输出,ARR2D是oldarray中的2D阵列。

您的代码中有几个语法错误。另外,我怀疑您需要八个独立的2D数据副本,而不是对2D片的8个指数(如果您更改一个值,则更改它们)。

尝试以下操作:

from copy import deepcopy
a = [
     [[1, 2, 3], ['a', 'b', 'c']],
     [[4, 5, 6], ['@', '#', '$']],
     [[7, 8, 9], ['X', 'Y', 'Z']]
    ]
l = []
for slice in a:
    l.extend([deepcopy(slice) for _ in range(8)])
l[0][0][0] = "FLAG"
print l

在最终打印中,请注意如何仅一个位置更改为字符串"标志",而不是该切片的所有8个副本更改。

最新更新