首页 > 解决方案 > 将数据从另一个数组填充到数组

问题描述

我正在尝试用列表数据中我想要的形状填充一个空数组。我正在使用 for 循环来执行此操作,但它只是读取第一个值并用它们填充整个数组。

我想要的是每十二个数字填充一次数组。例如:

列表:[1,2,3, ... , 24]

数组 = [[1,2,...,12], [13,14,...,24]]

这是我的代码:

SSTA_12_data = []

for i in range(0,len(SSTA_12)):
    SSTA_12_data.append(SSTA_12["ANOM1+2"][i])

np.shape(SSTA_12_data)
(461,)

Prueba_a = np.empty(shape=(len(Años),12)) (Años has len 39)
Prueba_a[:] = np.nan


for i in range(0,39):
    for j in range(0,12):
        Prueba_a[i,j] = SSTA_12_data[j]

这就是我得到的:

array([[-0.17, -0.58, -1.31, -0.97, -0.23,  0.07,  0.87,  1.1 ,  1.44,
         2.12,  3.  ,  3.34],
       [-0.17, -0.58, -1.31, -0.97, -0.23,  0.07,  0.87,  1.1 ,  1.44,
         2.12,  3.  ,  3.34],
       [-0.17, -0.58, -1.31, -0.97, -0.23,  0.07,  0.87,  1.1 ,  1.44,
         2.12,  3.  ,  3.34],
       [-0.17, -0.58, -1.31, -0.97, -0.23,  0.07,  0.87,  1.1 ,  1.44,
         2.12,  3.  ,  3.34], ...]

标签: pythonarraysloopsfor-loop

解决方案


如果你已经在使用 numpy,你可以考虑使用 reshape。例如,如果SSTA_12_data.shapeis (120,),即一维 numpy 数组,那么SSTA_12_data.reshape((-1,12))将是 shape (10,12)。在代码中,您可以尝试:

SSTA_12_data = []

for i in range(0,len(SSTA_12)):
    SSTA_12_data.append(SSTA_12["ANOM1+2"][i])

padsize = 12 - (len(SSTA_12_data) % 12)
SSTA_12_data = np.array(SSTA_12_data)
Prueba_a = np.pad(SSTA_12_data, (0, padsize)).reshape((-1,12))

推荐阅读