Ось ще один спосіб відтворити цю помилку в Python2.7 за допомогою numpy:
import numpy as np
a = np.array([1,2,3])
b = np.array([4,5,6])
c = np.concatenate(a,b)
print(c)
np.concatenate
Метод видає помилку:
TypeError: only length-1 arrays can be converted to Python scalars
Якщо ви читаєте документацію навколо numpy.concatenate , ви бачите, що вона очікує набір об'єктів масиву numpy. Отже, оточуючи змінні за допомогою парен, це виправлено:
import numpy as np
a = np.array([1,2,3])
b = np.array([4,5,6])
c = np.concatenate((a,b))
print(c)
Потім друкується:
[1 2 3 4 5 6]
Що тут відбувається?
Ця помилка є випадком реалізації "бульбашок" - вона викликана філософією набору тексту качки python. Це загадкова помилка низького рівня, коли кишки пітона кидаються, коли він отримує якісь несподівані типи змінних, намагається втекти і щось зробити, проходить частину шляху, блює, намагається виправити помилку, не вдається, а потім каже вам, що "ви можете" t переформулювати відповіді підпростору, коли у вівторок вітер дме зі сходу ".
У більш розумних мовах, таких як C ++ або Java, це сказав би вам: "ви не можете використовувати TypeA там, де очікували TypeB". Але Python робить все можливим, щоб солдатись далі, робить щось невизначене, не вдається, а потім передає вам непотрібну помилку. Той факт, що ми повинні обговорювати це, є однією з причин, чому я не люблю Python або його філософію набору качок.
TypeError: Don't feed native python lists into numpy functions that expect numpy arrays. Either convert your python list to a numpy array or package your python lists into a tuple.
Python numpy справді кинув м'яч на це, це повідомлення про помилку жахливо.