#python #arrays #matrix
#python #массивы #матрица
Вопрос:
Я пытаюсь создать метод на python (и используя numpy), чтобы взять матрицу A
и привести ее к форме уменьшенного эшелона строк, используя метод исключения по Гауссу.
Я столкнулся со своей первой проблемой, которая заключается в попытке передать набор в качестве параметра.
Например: def gauss([A]):
выдает ошибку, которая была для меня неожиданностью. Почему это?
Кроме того, способ, которым я планирую создавать матрицы (может быть, это единственный способ?) в программе, заключается в следующем:
a = numpy.array([[1 ,2 ,3] , [4 ,5 ,6] , [7 ,8 ,9]])
Итак, я хотел бы иметь возможность передать это a
в мой метод gauss(a)
, а затем заставить gauss делать ужасные вещи с твоей матрицей
Спасибо
Комментарии:
1. Похоже, вам следует изменить объявление вашей функции на def gauss(A): , а затем привести A к набору внутри функции gauss .
2. На самом деле существует множество способов создания массивов в numpy: docs.scipy.org/doc/numpy/reference/routines . array-creation.html Также имейте в виду, что в numpy матрицы и массивы — это разные объекты.
Ответ №1:
Джошадель прав (в ныне покойном комментарии), что обычно невозможно сказать, что происходит, без некоторого кода и примера вывода, но в этом случае я думаю, что знаю:
def gauss([A]):
недопустимый синтаксис Python. Когда вы объявляете функцию, вы не можете заключать имена параметров в квадратные скобки. Просто используйте
def gauss(A):
И если вы хотите передать матрицу / массив / вложенный список или что-то еще в функцию, просто сделайте это!
gauss(a)
Затем в методе вы можете обрабатывать параметр A
как матрицу.
Комментарии:
1. Удалил комментарий непосредственно перед тем, как вы опубликовали это, потому что я понял проблему
Ответ №2:
Некоторая дополнительная информация на случай, если вы новичок в Python и определениях функций в Python.
[A]
(т.е. A
заключенный в квадратные скобки) является буквальным выражением для создания списка, содержащего A
. Так же, как 42
это буквальное выражение для «создания» целого числа 42, ‘foobar’ является буквальным выражением для «создания» строки foobar
и т.д.
Таким образом, попытка определить функцию с помощью def gauss([A]): pass
не имела бы смысла, так же как попытка определить функцию, подобную def gauss(42): pass
, не имела бы смысла.
Однако def gauss(a=20): pass
это совсем другая история. В этом случае создается функция с аргументом a
и значением по умолчанию, равным 20. В качестве дополнительного примечания, не рекомендуется определять функцию, подобную def gauss(a=[]): pass
поскольку []
она изменчива и вызовет проблемы в качестве аргумента по умолчанию.
Как уже предлагали другие def gauss(a): ...
, это исправит ваши ошибки.
Ответ №3:
def func(param):
так вы определяете функцию. Вы ничего не «передаете» во время определения функции. Работает ли это?
def gauss(a):
# do something with `a`
gauss([A])