关于#python#的问题:python numpy库的vstack concatenate hstack链接函数,返回原数组的副本还是视图

python numpy库的vstack concatenate hstack链接函数,返回原数组的副本还是视图?如何检测?如何避免对原数据的影响?

numpy数组合并函数返回的,既不是原数组的副本,也不是原数组的视图,而是重新分配内存得到的新对象——可以通过id函数查看数组的内存地址来确认,也可以通过修改一个数组而不影响数组来验证。

import numpy as np
a = np.array([[1,2],[3,4]])
b = np.array([[5,6]])
c = np.concatenate((a,b))
d = np.vstack((a,b))
id(a), id(b)
(140405705066128, 140405705076880)
id(c), id(d)
(140405705066320, 140405637570864)
c
array([[1, 2],
       [3, 4],
       [5, 6]])
c[2,0] = 9
c
array([[1, 2],
       [3, 4],
       [9, 6]])
b
array([[5, 6]])