将数组列表合并为一个数组列表

我在这个问题上花费的时间比我愿意承认的要多。我有一个名为:


def array_funct(filename):

...

 data = np.array((array))

 return data

它从文件夹中读取 .txt 文件并返回一个 numpy 数组。


第一行是 x 坐标列表,第二行是对应的 y 坐标。因此我使用:


array_funct(filename)[:,0]

array_funct(filename)[:,1]

访问 x 和 y 坐标。


现在我要做的就是创建一个 for 循环,它将读取多个文件并以下列方式存储它们


for i in range(0,number_of_files):


    array_funct(file[i])[:,0]

    array_funct(file[i])[:,1]

让我们看看我得到的 x 列表:


print(array_funct(file[0])[:,0])  

[1,2,3,4]

print(array_funct(file[1])[:,0]) 

[2,4,6,8]

我想要的只是获取这两个类似 numpy 的列表并创建:


x_tot = [[1,2,3,4], [2,4,6,8]]

这样我就可以明智地访问单个列表元素,例如:


x_tot[0] = [1,2,3,4]

有这么难吗?我应该停止使用 numpy 数组吗?如果可能的话,我想留在 numpy。


还要记住,我只为 2 个文件制作了这个示例,但它可能更多。我只想为我要读入的可变数量的文件创建一个 x_tot 和 y_tot。这样:


x_tot = [[1,2,3],[2,3,4],[..],..]

x_tot = [[2,4,6],[4,6,8],[..],..]


婷婷同学_
浏览 149回答 2
2回答

汪汪一只猫

给定以下array_funct函数和filenames列表:def array_funct(filename):    # Fake random data, replace with data read from file    data_read = [[1,2,3,4], [5,6,7,8]] # [random.sample(range(1, 10), 7), random.sample(range(1, 10), 7)]      data = np.array(data_read)     return datafilenames = ['file1.txt', 'file2.txt']试试这个代码:lx = [list(array_funct(file)[0]) for file in filenames]ly = [list(array_funct(file)[1]) for file in filenames]或者通过一次读取和滚动文件来更有效地:all_data = [(list(arr[0]),list(arr[1])) for arr in [array_funct(f) for f in filenames]]lx, ly = list(map(list, zip(*all_data)))在这两种情况下,输出如下:# lx = [[1, 2, 3, 4], [1, 2, 3, 4]]# ly = [[5, 6, 7, 8], [5, 6, 7, 8]]

繁星点点滴滴

就像是:x_tot = np.array([array_funct(file[i])[:,0] for i in range(0,number_of_files)])应该管用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python