[英]ValueError: not enough values to unpack (expected 2, got1)
我正在尝试将图像转换为numpy数组,当这样做时,它给了我标题中提到的错误。 回溯错误来自以下行:
nx,ny = np.shape(matrix)
我的其余代码如下。 我可以提出一些建议来解决此问题吗?
#change the quoted part to change directory and
#file type
filelist = glob.glob('Desktop/*.png')
#set Matrix as the numpy array.
#change the second half were np
#is used to make the program
#use a different set of data
matrix = np.array([np.array(Image.open(fname)) for fname in filelist])
#numpy array
nx,ny = np.shape(matrix)
CXY = np.zeros([ny, nx])
for i in range(ny):
for j in range(nx):
CXY[i,j] = np.max(matrix[j,i,:])
#Binary data
np.save('/home/l/Desktop/maximums.npy', CXY)
#Human readable data
np.savetxt('/home/l/Desktop/maximums.txt', CXY)
在构造这样的数组时,请确保您了解所得到的。 特别要验证形状和dtype。
matrix = np.array([np.array(Image.open(fname)) for fname in filelist])
nx,ny = np.shape(matrix)
这样的解压缩仅在matrix
为2d时才有效,也就是说,其形状为2个元素元组,每个2个变量中的一个元素。
此索引matrix[j,i,:]
建议您期望matrix
为3d。 这将产生一个拆包错误, expected 2, got 3
。
CXY = np.zeros([ny, nx])
for i in range(ny):
for j in range(nx):
CXY[i,j] = np.max(matrix[j,i,:])
但是实际误差告诉我们matrix
是1d。 我怀疑它也是object
dtype。 是一个一维数组数组。
我在猜测matrix
创建中发生的事情。 Image.open(fname)
-这是做什么的? 打开文件? 也阅读吗? 为什么使用np.array()
包装器。 但让我们假设它加载2d或3d图像阵列。 所有图像都一样大小吗? 如果它们不同,则外部np.array
不能将它们组装成更高维的数组。 相反,它诉诸于制作一维对象数组-数组数组。
总之,请确保您了解matrix
的构造方式以及产生的结果。
nx, ny = ...
可以派上用场,但这是不能原谅的。 如果尺寸错误,则会在没有太多信息的情况下引发错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.