Возникла проблема с функцией конкатенации в python3: нужен хотя бы один массив для конкатенации - PullRequest
2 голосов
/ 17 июня 2020
face_data =[]
labels = []

class_id = 0
names = {}

for fx in os.listdir(dataset_path):
    if fx.endswith('.npy'):
        data_item = np.load(dataset_path+fx)
        face_data.append(data_item)

        target = class_id*np.ones((data_item.shape[0],))
        class_id+=1
        labels.append(target)

face_dataset = np.concatenate(face_data,axis=0)   #error here
face_labels = np.concatenate(labels,axis=0).reshape((-1,1))

print(face_dataset.shape)
print(face_labels.shape)

trainset = np.concatenate((face_dataset,face_labels),axis=1)

Я получаю такую ​​ошибку: требуется хотя бы один массив для объединения.
Есть ли разница в работе функции объединения в версиях python? Я упускаю какие-то аргументы? Функция конкатенации отлично работала на p c в моей онлайн-лекции.

Ответы [ 2 ]

0 голосов
/ 17 июня 2020

Это то, что делает np.concatenate. Он объединяет последовательность массивов вдоль существующей оси.

>>> x = np.array([1,2])
>>> y = np.array([3,4])
>>> z = np.concatenate((x,y))
>>> print(x)
[1 2]
>>> print(y)
[3 4]
>>> print(z)
[1 2 3 4]

Вы передаете только один массив, который, вероятно, является массивом 0d. Вот почему вы появляется ошибка.

Думаю, что вам нужно, это np.array(face_data)

0 голосов
/ 17 июня 2020

Ошибка, которую вы получаете, обычно возникает, когда массив, который вы пытаетесь объединить, пуст. Вы проверяли face_data перед объединением?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...