为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

婷婷同学_ 2022-06-07 17:24:20
我在这个问题上花费的时间比我愿意承认的要多。我有一个名为: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],[..],..]
查看完整描述

2 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

给定以下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 data


filenames = ['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]]


查看完整回答
反对 回复 2022-06-07
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

就像是:

x_tot = np.array([array_funct(file[i])[:,0] for i in range(0,number_of_files)])

应该管用。


查看完整回答
反对 回复 2022-06-07
  • 2 回答
  • 0 关注
  • 148 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信