将np.array添加到列表后维度丢失

时间:2018-11-05 20:07:26

标签: python arrays numpy

我正在将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)

1 个答案:

答案 0 :(得分:0)

没有您的数据,这是无法解决的。但是,您可以在for循环中添加显式检查以自行调试。这不仅可以确认数组的形状不正确,还可以提供一些有用的信息来隔离数组的出现位置:

assert flattenImgMatrix.shape == (270000,), f'Error: {file}: {flattenImgMatrix.shape}'