массив не вызывается в питоне "объект numpy.ndarray не вызывается" - PullRequest
0 голосов
/ 08 декабря 2018

Я работаю в нейронной сети, и когда я пытаюсь перетасовать два numpy.ndarray, я получаю эту ошибку.Я попытался перепроверить формат функции shuffle и не могу найти никаких ошибок с этим.Пожалуйста, помогите

train_images,train_labels = shuffle(train_images,train_labels)
TypeError                                 
Traceback (most recent call last)
<ipython-input-8-b3f4173331ac> in <module>
 18     print("Training the Network")
 19     for i in range(epoch):
 20     --> train_images,train_labels = shuffle(train_images,train_labels)
 21         for offset in range (0,no_eg,batch_size):
 22             end = offset+batch_size

/usr/lib/python3.5/random.py in shuffle(self, x, random)
275             for i in reversed(range(1, len(x))):
276                 # pick an element in x[:i+1] with which to exchange x[i]
277            -->  j = _int(random() * (i+1))
278                 x[i], x[j] = x[j], x[i]
279 

TypeError: 'numpy.ndarray' object is not callabl

Спасибо

Ответы [ 2 ]

0 голосов
/ 08 декабря 2018

Есть две функции с именем shuffle, которые вы можете использовать, и ни одна из них не работает так, как вы ожидаете.

random.shuffle(x, random=None) список случайных чисел x с использованием функции random.

numpy.random.shuffle(x) тасует массив NumPy x.

Обе функции могут тасовать только один массив за раз, но вы хотите тасовать два массива, и вы хотите их тасовать последовательно.Подумайте о создании серии панд, перетасовке («выборке») серии, а затем о разбиении ее на значения и метки:

import pandas as pd
series = pd.Series(train_images, index=train_labels)
shuffled = series.sample(series.size)
train_images_shuffled = shuffled.values
train_labels_shuffled = shuffled.index
0 голосов
/ 08 декабря 2018

Посмотрите документы random.shuffle (x [, random])

Необязательный аргумент random - это функция с 0 аргументами, возвращающая случайное число с плавающей точкой в[0,0, 1,0);по умолчанию это функция random ()

, в вашем случае вы передаете train_labels, который, согласно сообщению об ошибке, является numpy.ndarray, а не функцией

...