如何通过循环将ND numpy数组追加到(N + 1)D numpy数组?

时间:2018-11-27 19:50:08

标签: python arrays numpy

例如,我需要根据图像创建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:,:]

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.]])