数据分析Numpy(6)-数组之间赋值
矩阵之间以 = 赋值会产生关联性,一个矩阵中的元素的更改会导致赋值的矩阵相应元素自动更改;而以copy()方法 赋值则不会产生关联性import numpy as npa = np.arange(4)# [0, 1, 2, 3]b = ac = aa[0] = 4 #更改第一个元素值print(a) # [4, 1, 2, 3]print(b) # [4, 1, 2, 3]print(c) # [
·
矩阵之间以 = 赋值会产生关联性,内存一样,一个矩阵中的元素的更改会导致赋值的矩阵相应元素自动更改;而以copy()方法 赋值则不会产生关联性,内存地址不一样;c=a.view()进行复制,相当于创建一个视图,a和c的内存位置一样,c的值改变a也会对应改变,但c结构变化,a不会变化
import numpy as np a = np.arange(4)# [0, 1, 2, 3] b = a c = a a[0] = 4 #更改第一个元素值 print(a) # [4, 1, 2, 3] print(b) # [4, 1, 2, 3] print(c) # [4, 1, 2, 3] #同理改变b,c也会导致a相应改变 d = a.copy() a[0] = 0 print(a) #[0,1,2,3] print(d) #[4,1,2,3] c = a.view() # 将 a 复制给 c print(c is a) print("c=",c) c.shape = (2,6) # 改变 c 的结构为2行6列,看 a 是否会变化 print("c.shape=",c.shape) print ("a.shape=",a.shape) c[0,4] = 1234 # 改变 矩阵c 第0行4列的值,看 a 的值是否会变化 print("c=",c) print("a=",a) print (id(a)) # 内存地址,2493855144416 print (id(b)) # 内存地址,2493855144416 #切片数组会返回一个视图 s = a[ : , 1:3] s[:] = 10 #更改数组视图中的1、2列中的元素为10 print(a) ''' array([[ 0, 10, 10, 3], [1234, 10, 10, 7], [ 8, 10, 10, 11]]) '''
更多推荐
所有评论(0)