请考虑以下两个例子。 例1:
def f(inp):
inp[0] = 42
inp.append(12)
inp.append(13)
v = [1, 2, 3, 4]
f(v)
print(v)
>>> [42, 2, 3, 4, 12, 13]
这里是例2:
def g(inp):
inp[0] = 42
np.append(inp, [12, 13])
u = np.array([1, 2, 3, 4])
g(u)
print(u)
>>> [42 2 3 4]
在第一个中,该函数可以更改全局列表的元素并附加到它。这是因为Python通过引用调用函数。但是为什么第二个函数可以改变全局ndarray的值,但不能附加到它?
答案 0 :(得分:4)
http://docs.scipy.org/doc/numpy/reference/generated/numpy.append.html:
arr:值附加到此数组的副本。
因此您要修改g()