在 python 中将 xarray 复制到更大的 xarray?

Copy xarray into larger xarray in python?

我有一个形状为 [3,] 的 xarray,看起来像这样

data= [2,4,6]

我正在尝试将其复制到数组中,使其看起来像这样:

data= [[2,4,6],[2,4,6],[2,4,6]] (即整个数组被复制三次)。

我尝试了几种不同的方法,但不断得到:

data= [2 2 2,4 4 4,6 6 6]

有人知道我应该怎么做吗? (另外,抱歉,如果我没有根据堆栈溢出规则写这个,这是我的第一个问题...)

前两个答案实际上并没有照搬原文array/list。相反,它们都只是在新列表中引用数组 3 次。如果您更改原始数组中的一个值或新列表中的任何“副本”,则数组的所有“副本”都会更改,因为它们实际上都是相同的结构,只是在多个地方引用.

如果您想创建一个包含原始数组(xarray 或列表)的三个唯一副本的列表,您可以这样做:

new_list = [data[:] for _ in range(3)]

或者如果您想要一个包含原始数组的新 xarray:

new_array = xarray.DataArray([data[:] for _ in range(3)])

我认为最安全的方法是:

import itertools

data = [2,4,6]
res = list(itertools.chain.from_iterable(itertools.repeat(x, 3) for x in [data]))
print(res)

Output: [[2, 4, 6], [2, 4, 6], [2, 4, 6]]