我正在编写一个脚本,将图像的一部分(下面报告的代码中的“submatrix”)保存为tif文件。运行代码时,出现以下错误:
height, width = np.array(submatrix.shape, dtype = float) / dpi
ValueError: too many values to unpack
如果我不使用子矩阵,而是使用一个随机矩阵,比如np.random.random((10,10)),那么一切都运行良好。你发现我做错了什么吗?
使用
import matplotlib.pyplot as plt
import math
import numpy as np
下面是错误所在的代码部分:
submatrix = im[x_min:x_max, y_min:y_max]
dpi = size_box
height, width = np.array(submatrix.shape, dtype = float) / dpi
错误消息告诉您问题所在。要解包的值太多。显然
submatrix.shape
的长度大于2。我不知道为什么,因为我不知道
im
是什么。但请看一下交互式提示符的以下输出:像这样的事情导致了你的问题,
submatrix
履行的角色,[1,2,3]
以上所做的。如果去掉所有numpy,这只是一个标准的序列解包错误。最简单的例子是:
当您执行sequence unpacking时,赋值运算符左侧和右侧的序列必须具有相同的长度。
每当遇到这个问题时,我都会将输出设置为一个变量,然后检查该变量以查看其中的内容。
98%的时候,我只是算错了数组大小。(即X、Y和Z)其他2%通常是由可变长度数组(非常糟糕)引起的。
早期,我不会在声明的同一行上使用sequence unpack,只是为了使调试更容易。然后我在
height, width
行上设置一个断点,以查看它为什么会导致问题。相关问题 更多 >
编程相关推荐