python - 将 np.array 添加到列表后尺寸丢失
问题描述
我将 3000 个 np.arrays 添加到列表中并将列表转换回 np.array。np.array 的维度是 (270000,)。在整个循环运行和 np.array 转换过程后,结果数组的维度为:(3000,),而预期为 (3000,270000)。奇怪的是,在中途停止进程时,比如在 1900 个数组处,观察到的形状是 (1900,270000),这就是我希望输出在循环结束时的样子。
from scipy import misc
from os import walk
labels = []
X=[]
Y=[]
for (_, dirnames, _) in walk(mypath):
labels.extend(dirnames)
for category, label in enumerate(labels):
# print 'Category:',category,'\tLabel:',label
for root, dirs, files in os.walk(os.path.abspath(join(mypath,label))):
for file in files:
imagePath=os.path.join(root, file)
face = misc.imread(imagePath)
flattenImgMatrix=misc.imresize(face,[300, 300], interp='nearest').flatten()
X.append(flattenImgMatrix)
Y.append([category])
arrX=np.array(X)
arrY=np.array(Y)
解决方案
没有您的数据,这是不可能解决的。但是,您可以在for
循环中添加显式检查以自行调试。这不仅会确认数组是错误的形状,而且会提供一些有用的信息来隔离它出现的位置:
assert flattenImgMatrix.shape == (270000,), f'Error: {file}: {flattenImgMatrix.shape}'
推荐阅读
- r - 使用循环创建多个虚拟变量
- android - Firemonkey:如何检测操作系统(Android/iOS)何时关闭
- mysql - 如何在每个 GROUP BY 中排序
- sql - Msg 137, Level 15, State 2, Server ip-172-31-36-11, Line 2 必须声明标量变量“@Deptno”
- autohotkey - 无法使用小键盘作为我的键盘触发器
- javascript - 运行节点应用程序时出错。请帮我解决这个错误
- c# - 在 Bot Framework 的对话框中发送多条消息
- google-play - 确定应用程序是处于 Alpha/Beta 阶段还是处于生产阶段
- c# - 当我尝试读取 Json 文件时,我收到错误“JSON 解析错误无效值”
- reactjs - 制表器图像点击放大