如果要将矢量(或数组)作为输入传递给某些用户定义的函数以对其进行某些操作,则可以传递组件:
def sample(X_0,Y_0)
#here X_0 and Y_0 are some components of the arrays X and Y
#do some operations with those components of X and Y like
scalar= X_0+Y_0
return scalar
number=sample(X[0,0],Y[0,0])
或传递向量并在函数内部分解:
def sample(X,Y)
#here X and Y are arrays
#do some operations like
scalar=X[0,0]+Y[0,0]
return scalar
number=sample(X,Y)
这是首选方法,为什么?
答案 0 :(得分:0)
在您的特定情况下,将结果绑定到scalar
时,两个输出之间绝对没有区别。在python中,您倾向于按引用传递数组和列表,按值传递基元。那么什么时候可以期望看到不同呢?
考虑功能:
>>> def manipulateX(X):
... X[len(X)-1] = -1
... return X
...
调用带有列表的manipulateX
(如下所示)时,您会发现该列表也受到了操纵:
>>> x = [1, 2, 3, 4]
>>> manipulateX(x)
[1, 2, 3, -1]
>>> x
[1, 2, 3, -1]
但是,如果您定义了对基本类型进行操作的函数
>>> def manipulateY(Y):
... Y += 20
... return Y
...
并使用集合中的项目(列表,数组)等调用它:
>>> manipulateY(x[0])
21
>>> x
[1, 2, 3, -1]
>>>
您看到x[0]
保持不变。就您而言,将结果绑定到scalar
时,看不到任何区别。在这两种情况下,您的内存使用情况也相同。如果您没有将结果绑定到scalar
,则取决于是否要忽略x[0]
和y[0]
。