Python 创建自定义图像数据集时numpy数组形状出现问题

Python 创建自定义图像数据集时numpy数组形状出现问题,python,numpy,keras,Python,Numpy,Keras,我正在尝试使用jpg图像为深度学习项目创建自定义数据集。我需要一批一批地读。使用下面的代码执行此操作,但我的数组形状是(100,1224224,3),而不是(100224224,3)。有什么建议吗 path = '/content/drive/My Drive/Dataset/Training' X=[] for img in os.listdir(path): pic = cv2.imread(os.path.join(path,img)) pic = cv2.cvtColor

我正在尝试使用jpg图像为深度学习项目创建自定义数据集。我需要一批一批地读。使用下面的代码执行此操作,但我的数组形状是
(100,1224224,3)
,而不是
(100224224,3)
。有什么建议吗

path = '/content/drive/My Drive/Dataset/Training'
X=[]
for img in os.listdir(path):
    pic = cv2.imread(os.path.join(path,img))
    pic = cv2.cvtColor(pic,cv2.COLOR_BGR2RGB)
    pic = cv2.resize(pic,(224,224))
    X.append([pic])
X=np.array(X)
print(X.shape)

从一般角度来看,使用
numpy
中的
挤压
从张量中删除未使用的尺寸(单位长度)

例如:

print(np.squeeze(X).shape)
给你:

(1002242243)

但在您的情况下,在第7行中使用
X.append(pic)
就足够了(请尝试检查此项)

提示:使用
numpy
时尽量避免使用列表。关于@hpaulj comment,您可以使用
numpy
concatenate
功能代替列表:

# initialization like X = []
X = np.zeros([0]+list(pic.shape))
...
# append
X = np.concatenate((X, pic.reshape([1]+list(pic.shape))), axis=0)

X.append(pic)
是[]添加了大小为1的维度。@hpaulj,你看过我的答案了吗?我写的内容与您现在评论的内容完全相同。列表是迭代收集值的最佳方式。@hpaulj我只写了“尽量避免”(这不是限制),因为使用列表会增加计算时间。
# initialization like X = []
X = np.zeros([0]+list(pic.shape))
...
# append
X = np.concatenate((X, pic.reshape([1]+list(pic.shape))), axis=0)