在python中的每个for循环迭代中将数组存储在唯一变量中
目前,我正在使用windows平台进行一个python项目,我需要在其中处理图像。 在这种情况下,我需要将我的图像分成几个部分,然后将它们存储为唯一的图像。 为此,我需要将图像转换为浮点数组,然后对其进行分割 对分割部分进行排序。 但我遇到的问题是存储这些新生成的数组 例如,如果我的循环运行了6次,将生成6个新数组(大尺寸,比如300 X 420),我需要将它们存储在每次迭代的唯一变量中,这样它们就不会相互重叠 我该怎么做 如何为每次迭代将新生成的循环数组存储到不同的数组中?之后我需要这些数组,因此存储它们对我来说很重要 生成的数组数量也是动态的 代码如下: ` ` 注意:生成的阵列已经是二维的,大小为327 X 500。 所以请给我一个存储二维阵列的解决方案。 现在不管我们使用什么字典、列表或新变量:) 编辑 根据一些解决方案,我尝试将新生成的数组插入到另一个大数组中。但仍然有一些错误,我得到。新的代码块是:在python中的每个for循环迭代中将数组存储在唯一变量中,python,arrays,Python,Arrays,目前,我正在使用windows平台进行一个python项目,我需要在其中处理图像。 在这种情况下,我需要将我的图像分成几个部分,然后将它们存储为唯一的图像。 为此,我需要将图像转换为浮点数组,然后对其进行分割 对分割部分进行排序。 但我遇到的问题是存储这些新生成的数组 例如,如果我的循环运行了6次,将生成6个新数组(大尺寸,比如300 X 420),我需要将它们存储在每次迭代的唯一变量中,这样它们就不会相互重叠 我该怎么做 如何为每次迭代将新生成的循环数组存储到不同的数组中?之后我需要这些数组,
#read image and do its segmentation
image = cv2.imread("Path to input image\\___.png")
segments = slic(img_as_float(image), compactness=100.0, n_segments = 2,sigma = 5)
#loop to generate individual segments and to store them individually
for (i, segVal) in enumerate(np.unique(segments)):
print "[x] inspecting segment %d" % (i)
mask = np.zeros(image.shape[:2], dtype = "uint8")
mask[segments == segVal] = 255
s2 = np.array(segments);
results= []
bb= (cv2.bitwise_and(image, image, mask = mask) )
results.append(bb)
#above the unique array is generated and appended into a big array
#store the generated array as unique image at desired location
cv2.imwrite('Path to store\\__.png', results(i))
我得到的错误有:
无法为此行调用列表对象cv2.imwrite('Path to store\\\\ uuuu.png',results(i))
应进行哪些更改?您不能将其存储在唯一变量中。但是,您可以创建一个二维数组来存储它们。例如,如果有3个生成的数组:
[1,2,3]
、[4,5,6]
和[7,8,9]
,则二维数组的结构如下所示:
[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
然后,要访问各个数组,只需访问所需的索引,然后是所需元素的索引。例如,要获取第一个数组的第二个元素,可以说类似于arr[0][1]
。这将返回2
编辑
单个数组是否已经是二维的并不重要。只需添加另一个维度即可。比如说,
# make a big array
bigarray = []
#read image and do its segmentation
image = cv2.imread("Path to input image\\___.png")
segments = slic(img_as_float(image), compactness=100.0, n_segments = 2,sigma = 5)
#loop to generate individual segments and to store them individually
for (i, segVal) in enumerate(np.unique(segments)):
print "[x] inspecting segment %d" % (i)
mask = np.zeros(image.shape[:2], dtype = "uint8")
mask[segments == segVal] = 255
s2 = np.array(segments);
bb= (cv2.bitwise_and(image, image, mask = mask) )
#above the unique array is generated
#store the generated array as unique image at desired location
cv2.imwrite('Path to store\\__.png', bb)
# push the generated 2d array to the big array
bigarray.append(bb)
然后,假设您想要访问第一个二维数组,您可以说
bigarray[0]
。如果要访问第一个二维数组的左上角像素,可以说bigarray[0][0][0]
不能将它们存储在唯一变量中。但是,您可以创建一个二维数组来存储它们。例如,如果有3个生成的数组:[1,2,3]
、[4,5,6]
和[7,8,9]
,则二维数组的结构如下所示:
[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
然后,要访问各个数组,只需访问所需的索引,然后是所需元素的索引。例如,要获取第一个数组的第二个元素,可以说类似于arr[0][1]
。这将返回2
编辑
单个数组是否已经是二维的并不重要。只需添加另一个维度即可。比如说,
# make a big array
bigarray = []
#read image and do its segmentation
image = cv2.imread("Path to input image\\___.png")
segments = slic(img_as_float(image), compactness=100.0, n_segments = 2,sigma = 5)
#loop to generate individual segments and to store them individually
for (i, segVal) in enumerate(np.unique(segments)):
print "[x] inspecting segment %d" % (i)
mask = np.zeros(image.shape[:2], dtype = "uint8")
mask[segments == segVal] = 255
s2 = np.array(segments);
bb= (cv2.bitwise_and(image, image, mask = mask) )
#above the unique array is generated
#store the generated array as unique image at desired location
cv2.imwrite('Path to store\\__.png', bb)
# push the generated 2d array to the big array
bigarray.append(bb)
然后,假设您想要访问第一个二维数组,您可以说
bigarray[0]
。如果您想访问第一个二维阵列的左上角像素,可以说bigarray[0][0][0]
您可以将所有内容存储在一个大阵列中。您可以使用二维阵列或字典。你能分享一下使用的示例代码吗?它们的数组已经是二维的了。请分享一个示例代码,解释如何将它们存储在一个大数组中@moritzg327x500对于阵列来说是一个相当小的尺寸。你想要的是使用一个列表,动态生成的变量通常是个坏主意。只需在循环之前创建一个空列表l
,并在运行时将每个新数组附加到该列表中,即可在调用l[2]
或任何其他号码后访问这些数组。您可以将所有内容存储在一个大数组中。您可以使用二维数组或字典。你能分享一下使用的示例代码吗?它们的数组已经是二维的了。请分享一个示例代码,解释如何将它们存储在一个大数组中@moritzg327x500对于阵列来说是一个相当小的尺寸。你想要的是使用一个列表,动态生成的变量通常是个坏主意。只需在循环之前创建一个空列表l
,并在运行时将每个新数组附加到该列表中,即可在调用l[2]
或任何其他号码后访问这些数组。我的数组是二维的。有没有方法将二维数组存储到另一个数组中?只需添加另一个维度。数组可以是三维的:),所以它类似于arr[0][0][1]。请举一个例子。比如它对我的代码有什么帮助@感谢您的解决方案@ThomasJamesTiam lee!:)但是在使用这个大数组解决方案时,我遇到了各种各样的错误。我将编辑我的问题,并显示其中的错误。请检查并帮助!谢谢我的数组是二维的。有没有方法将二维数组存储到另一个数组中?只需添加另一个维度。数组可以是三维的:),所以它类似于arr[0][0][1]。请举一个例子。比如它对我的代码有什么帮助@感谢您的解决方案@ThomasJamesTiam lee!:)但是在使用这个大数组解决方案时,我遇到了各种各样的错误。我将编辑我的问题,并显示其中的错误。请检查并帮助!谢谢你