繁体   English   中英

ValueError:没有足够的值可解包(预期2,got1)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM