首页 > 解决方案 > 在 Python 3.8 中的 for 循环(或通过其他脚本)中迭代地命名数组

问题描述

我想从一个文件中导入 50 个单色 .tiff 图像matplotlib.image,并将每个图像存储在一个单独的 2D numpy 数组中。对单个图像执行此操作很简单,并且适用于我的系统:

import matplotlib.image as mpimg
arr  = mpimg.imread("file.tiff")

但是,我想对所有 50 个图像执行此操作(因此得到 50 个数组),但我无法找到一种简单的方法。我希望我可以使用 for 循环,并且可以迭代文件名:

# imagine our files are file0.tiff, file1.tiff,..., file49.tiff
for i in range(50):
    arr = mpimg.imread("file" + str(i) + ".tiff")

但是,这只是(重新)定义了arr50 次。问题是我不知道如何(自动)创建命名数组arr0, arr1, arr2...等等。我无法想象我该怎么做,因为我能想到的创建数组名称的所有想法都涉及使用字符串,并且"arr"arr. 那会得到我"arr0" = mpimg.imread("file0.tiff"),这是行不通的。

有没有办法将变量(正/零整数)插入定义浮点/字符串/整数/布尔等的行的左侧?x实际上x = 12x = numpy.array([...])除了直接将自己输入代码之外,还有什么方法可以将数据插入x到代码中?

我尝试使用逗号,但 Python 显然解释x,y = ...为 2 元组的定义。

我可以做一些事情,比如创建一个列表["arr0","arr1","arr2",...],并以某种方式将图像与列表中每个字符串的内容相关联吗?

我试图避免使用包含 50 个图像的单个大数组,因为这需要一个包含大约 4300 万个元素的数组,而我运行此代码的计算机并不是特别强大。我仍然考虑将所有内容附加到这样的数组中,然后逐元素定义新数组,但这遇到了命名单个数组的相同问题。

标签: pythonarraysfor-loopequality

解决方案


推荐阅读