【问题标题】:Loading multiple files and saving them as variables加载多个文件并将它们保存为变量
【发布时间】:2017-11-29 19:20:38
【问题描述】:

我需要从不同的文件加载数据并将其保存为数组。我有多个名为 file.n.project.dat 的文件,其中 n 为 1-100。到目前为止,似乎使用 numpy 是最好的开始方式。每个文件都是一个 5 x 5 的数组。稍后我需要能够在我的代码中添加/相乘数组。

现在我有这段代码来加载数据,但是如何让每个文件成为自己的变量?

import numpy as np
for i in range(1,101):
    np.loadtxt('file.' + str(i) + '.project.dat')

所以我需要做的是加载多个文件并为每个文件创建一个变量。

我已经看到以前的帖子使用 vars() 创建变量,但我无法解决我的问题。

【问题讨论】:

  • 当您需要多个变量时,您肯定在寻找list
  • 你能详细说明吗?
  • lists 是数据容器:p = [1,2,3,4,5] - 这里一个变量 p 一次包含 5 个元素。在你的情况下也可以做同样的事情。
  • 这取决于您的要求。你想用它们做什么?

标签: python numpy data-manipulation


【解决方案1】:

你可以使用字典。

d = {}
for i in range(1, 101):
    d['matrix{}'.format(i)] = np.loadtxt('file.{}.project.dat'.format(i))

这不会创建新的变量,但可能会解决您的任务,因为您可以按名称引用矩阵,d['matrix10']

【讨论】:

  • 我还没有听说过字典。这很有帮助。我可以尝试使用这种方法。非常感谢
【解决方案2】:

您能否尝试将每个值附加到列表中,然后尝试逐个访问列表元素以获取值。 import numpy as np l = [] for i in range(1,101): l.append(np.loadtxt('file.' + str(i) + '.project.dat')) print l

我相信你的问题应该这样解决。 l 将拥有你想要的所有值。

【讨论】:

  • 谢谢。我认为有更好的方法可以做到这一点,但无法完全弄清楚。我需要将我的想法切换到列表,我主要使用小型 Matlab 代码和变量可以很好地处理它。
  • 当然,使用列表可以避免很多复杂情况并允许串行访问。祝你好运
  • Python 列表更像 MATLAB 单元 - 用于收集各种矩阵和对象的地方。
【解决方案3】:

与其为要从磁盘加载的每个数组创建一个新变量,不如将它们全部存储在一个集合中,例如列表或字典。

例如:

import numpy as np

# As a list
my_arrays = [np.loadtxt('file.{}.project.dat'.format(i)) for i in range(1, 101)]

# As a dictionary
my_arrays = {i: np.loadtxt('file.{}.project.dat'.format(i)) for i in range(1, 101)}

【讨论】:

    猜你喜欢
    • 2016-12-06
    • 1970-01-01
    • 1970-01-01
    • 2013-12-12
    • 1970-01-01
    • 1970-01-01
    • 2012-04-27
    • 2013-08-08
    • 1970-01-01
    相关资源
    最近更新 更多