当我尝试创建一个 numpy 数组并且我厌倦了使用拼接来操作它时。理想拼接数组和原始数组应该保持不变,但事实并非如此。为什么?
a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
我已经使用了这个数组 我现在拼接并更新它的值
c = a[:2,1:3]
c[0,0] = 99
现在 a 的值也在其各自的位置更新 在python中,这仅在地址相同时发生
当我检查每个 ID 时,它显示不同
print(id(c),id(a))
输出:
139866833241552 139866835761152
答案 0 :(得分:0)
array([[ 1, 2, 3, 4, 5],
[ 6, 7, 9, 10, 11]])
>>> c=a[:2,1:3]
>>> c
array([[2, 3],
[7, 9]])
>>> c[0,0]
2
>>> c[0,0]=99
>>> c
array([[99, 3],
[ 7, 9]])
>>> a
array([[ 1, 99, 3, 4, 5],
[ 6, 7, 9, 10, 11]])
您的问题是为什么 c 中的 a 反映了变化?
如下-
>>> a
array([[ 1, 99, 3, 4, 5],
[ 6, 7, 9, 10, 11]])
>>> c=np.array(a)
>>> c
array([[ 1, 99, 3, 4, 5],
[ 6, 7, 9, 10, 11]])
>>> c[0,0]=100
>>> c
array([[100, 99, 3, 4, 5],
[ 6, 7, 9, 10, 11]])
>>> a
array([[ 1, 99, 3, 4, 5],
[ 6, 7, 9, 10, 11]])````