我正在尝试在python中创建一个方法(并利用numpy)来获取矩阵A
并使用高斯消元法将其减少为减少的行梯形形式。
我遇到了第一个试图将一个集合作为参数传递的问题。
例如:def gauss([A]):
给我一个错误,这让我很惊讶。这是为什么?
另外,我计划在程序中构建矩阵的方式(也许是唯一的方法?)如下:
a = numpy.array([[1 ,2 ,3] , [4 ,5 ,6] , [7 ,8 ,9]])
所以我希望能够将a
传递给我的方法gauss(a)
,然后高手对你的矩阵做一些可怕的事情
谢谢
答案 0 :(得分:6)
JoshAdel是正确的(在现已离开的评论中),如果没有一些代码和示例输出通常无法判断发生了什么,但在这种情况下我想我知道:
def gauss([A]):
是无效的Python语法。当您声明一个函数时,不能用括号括起参数名称。只需使用
def gauss(A):
如果你想将矩阵/数组/嵌套列表或其他内容传递给函数,那就去做吧!
gauss(a)
在该方法中,您可以将参数A
视为矩阵。
答案 1 :(得分:4)
如果您不熟悉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
这样的函数,因为{{1是 mutable ,会导致问题成为默认参数。
正如其他人已经建议[]
将解决您的错误。
答案 2 :(得分:2)
def func(param):
是您定义函数的方式。在函数定义期间,您不会“传递”任何内容。这有用吗?
def gauss(a):
# do something with `a`
gauss([A])