如何从一组现有数组构造一个新的numpy数组?

2024-09-29 06:27:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有12个numpy数组,5个大小(3121)和7个大小(3120),顺序为0-11;称它们为a0,a1,…,a11。我想构建一个新的数组,具体如下:

newArray = [a0_00, a1_00, a2_00, ..., a11_00, a0_01, a1_01, ..., a11_01, a0_02...]

也就是说,我想从12个数组中的每一个数组中取第一列,按顺序将它们添加到我的新数组中,然后取12个数组中的每一个数组的第二列,依此类推。。。你知道吗

我最近尝试的只是在整个新数组timedata中重复每个数组的前12个值。。。你知道吗

for i in range(len(files)):
    data = loadtxt(files[i], skiprows=4, delimiter=',').T[0:,:]
    timedata[i::12] = data[0,0]

我尝试过嵌套for循环和以不同的方式索引数组,但到目前为止还没有任何结果。。。任何想法都将不胜感激。你知道吗

谢谢


Tags: innumpya2fordata顺序a1range
1条回答
网友
1楼 · 发布于 2024-09-29 06:27:20

你基本上有一个锯齿状的数组,是12 x 3 x(120或121)。如果a05到a11的最后一列被填满了,这就容易多了。相反,您可以遍历从0到120的列;遍历数组;并且仅当列存在时才将其添加到新数组中。你知道吗

下面是一些示例代码。请注意,我使用的长度是11和12,而不是120和121,但想法是一样的。你知道吗

import numpy as np

np.random.seed(1000)
a01 = np.random.randint(0,10, (3,12))
a02 = np.random.randint(0,10, (3,12))
a03 = np.random.randint(0,10, (3,12))
a04 = np.random.randint(0,10, (3,12))
a05 = np.random.randint(0,10, (3,12))
a06 = np.random.randint(0,10, (3,11))
a07 = np.random.randint(0,10, (3,11))
a08 = np.random.randint(0,10, (3,11))
a09 = np.random.randint(0,10, (3,11))
a10 = np.random.randint(0,10, (3,11))
a11 = np.random.randint(0,10, (3,11))
arrayList = [a01, a02, a03, a04, a05, a06, a07, a08, a09, a10, a11]
cols = np.sum([a.shape[1] for a in arrayList])
newArray = np.zeros((3,cols))

arrIndex = 0
for i in range(12):
    for a in arrayList:
        try: 
            newArray[:,arrIndex] = a[:,i]
            arrIndex = arrIndex + 1
        except IndexError:
            pass

相关问题 更多 >