如果有一个矩阵mtx_a,对该矩阵进行切片处理并赋值,如:
mtx_a[[1;;-1;;2,1;;-1;;2]]=mtx_tmp;
接着打印矩阵mtx_a,可以观察到mtx_a中的部分元素已经变成了mtx_tmp,这说明对矩阵mtx_a的切片与矩阵mtx_a共享同一块内存,并没有为其切片分配新的内存空间;
如果我们令
mtx_b = mtx_a[[1;;-1;;2,1;;-1;;2]];
mtx_b = mtx_tmp
接着打印矩阵mtx_a,可以观察到mtx_a并无任何改变,说明mtx_b被分配了新的内容空间,故对mtx_b的任何赋值均不影响mtx_a;但如果我不想改mtx_b分配新的内存空间,而是想让其指向mtx_a[[1;;-1;;2,1;;-1;;2]]的内存空间,可通过对mtx_b赋值影响到mtx_a的值,应该怎么做呢?
mtx_a[[1;;-1;;2,1;;-1;;2]]=mtx_tmp;
接着打印矩阵mtx_a,可以观察到mtx_a中的部分元素已经变成了mtx_tmp,这说明对矩阵mtx_a的切片与矩阵mtx_a共享同一块内存,并没有为其切片分配新的内存空间;
如果我们令
mtx_b = mtx_a[[1;;-1;;2,1;;-1;;2]];
mtx_b = mtx_tmp
接着打印矩阵mtx_a,可以观察到mtx_a并无任何改变,说明mtx_b被分配了新的内容空间,故对mtx_b的任何赋值均不影响mtx_a;但如果我不想改mtx_b分配新的内存空间,而是想让其指向mtx_a[[1;;-1;;2,1;;-1;;2]]的内存空间,可通过对mtx_b赋值影响到mtx_a的值,应该怎么做呢?