Ответ 1
Из Часто задаваемые вопросы по SciPy:
В идеальном мире NumPy будет содержать ничего, кроме типа данных массива и самого элементарного операции: индексирование, сортировка, переформатирование, основные элементарные функции и т.д. Все числовой код будет находиться в SciPy. Однако одной из важных целей NumPys является совместимость, поэтому NumPy пытается сохранить все функции, поддерживаемые одним из своих Предшественники. Таким образом, NumPy содержит некоторые линейные функции алгебры, хотя эти должным образом принадлежат SciPy. В любом случае SciPy содержит более полнофункциональные версии модули линейной алгебры, а также многие другие численные алгоритмы. Если вы делаете научных вычислений с помощью python, вы должны, вероятно, установить как NumPy, так и SciPy. Большинство новых > функций принадлежат SciPy, а не NumPy.
Итак, дубликаты предназначены для обратной совместимости. В общем, они дают тот же результат. Однако, как указано в FAQ, новые функции обычно внедряются в SciPy, но не обязательно NumPy. Это включает исправления ошибок. Я нашел, например, что numpy.linalg.eig вернул неправильные собственные значения для сложной матрицы, тогда как scipy.linalg.eig вернул правильные.
В общем, я предпочитаю придерживаться сценария "идеального мира" из FAQ: я использую NumPy для основных манипуляций с массивами и SciPy для всей моей линейной алгебры. Таким образом, я не сталкиваюсь с неожиданностями.