例如,我需要根据图像创建30x30的numpy数组,以将其馈送到神经网络。如果我有要预测的图像目录,则应该能够遍历该目录,获取图像数据并创建一个(n,30,30)形状的np数组 这是我目前的方法,我打算在输入模型之前重整每一行
def get_image_vectors(path):
img_list=os.listdir(path)
print(img_list)
X=np.empty((900,))
for img_file in img_list:
img= Image.open(os.path.join(path,img_file))
img_grey= img.convert("L")
resized = img_grey.resize((30,30))
flattened = np.array(resized.getdata())
# print(flattened.shape)
X=np.vstack((X,flattened))
print(img_file,'=>',X.shape)
return X[1:,:]
答案 0 :(得分:3)
与其附加到现有数组,不如先使用列表,然后附加到列表,最后再转换为数组,可能会更好。从而节省了np阵列的许多冗余修改。
以下是一个玩具示例:
import numpy as np
def get_image_vectors():
X= [] #Create empty list
for i in range(10):
flattened = np.zeros(900)
X.append(flattened) #Append some np array to it
return np.array(X) #Create array from the list
结果:
array([[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
...,
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.]])