Вот еще один способ, чтобы воспроизвести эту ошибку в python2.7 с NumPy:
import numpy as np
a = np.array([1,2,3])
b = np.array([4,5,6])
c = np.concatenate(a,b) #note the lack of tuple format for a and b
print(c)
Метод np.concatenate
производит ошибку:
TypeError: only length-1 arrays can be converted to Python scalars
Если вы читаете документацию вокруг numpy.concatenate, то вы увидите, что он ожидает кортежей объектов numpy array. Таким образом, окружающий переменные с фиксированными скобками это:
import numpy as np
a = np.array([1,2,3])
b = np.array([4,5,6])
c = np.concatenate((a,b)) #surround a and b with parens, packaging them as a tuple
print(c)
Затем он печатает:
[1 2 3 4 5 6]
Что здесь происходит?
Эта ошибка является примером реализации пузырьковой реализации, вызванной философией питона на утиной. Это критическая ошибка низкого уровня. Питоны python puke up, когда он получает некоторые неожиданные типы переменных, пытается убежать и что-то делать, получает часть пути, попытки заражения, попытки исправления, терпят неудачу, а затем говорит вам, что «вы можете», t refromulate подпространство реагирует, когда ветер дует с востока во вторник ».
В более разумных языках, таких как C++ или Java, он сказал бы вам: «вы не можете использовать TypeA, где ожидался TypeB». Но Python делает это лучше для солдат, делает что-то неопределенное, терпит неудачу, а затем возвращает вам бесполезную ошибку. Тот факт, что мы должны обсуждать это, является одной из причин, по которым мне не нравится Python, или ее философия утиной печати.
Когда вы загружаете собственный список python, например [1,2,3], в метод numpy, который ожидает массив numpy, вы получите эту ошибку. Этот метод numpy берет ваш собственный список python и пытается его переварить, а путь вглубь он вызывает этот ответ. Более удобным для пользователя сообщение об ошибке было бы: 'TypeError: не кормить собственные списки python в numpy-функции, которые ожидают массивы numpy. Либо преобразуйте ваш список python в массив numpy, либо упакуйте ваши списки python в кортеж. «Python numpy действительно сбросил мяч на него, это сообщение об ошибке ужасно. –