问题描述:
import numpy as np
#生成200*100的矩阵(将矩阵转换为整型方便理解)
pre_data=np.random.normal(50,20, size=(200,100))
pre_data=pre_data.astype(np.int)
#从矩阵pre_data中截取前98列
post_data=pre_data[:,0:98]
Fig 1.
post_data[:,15]=(post_data[:,14]+post_data[:,16])
Fig 2.
(1)代码段1先随机生成了200*100的整型随机矩阵,如Fig 1.所示;
(2)经过post_data=pre_data[:,0:98]后截取生成200*98的整型随机矩阵;
(3)代码段2将post_data中的第16列取为pre_data中第15和第17列的均值
按照正常情况理解,pre_data第16列(即上图列标15)处不应该发生改变,但是对比Fig 1.和Fig 2.中可以很明显地观察到,第16列的取值为左右两列的均值,此处发生改变。而在Matlab中直接截取生成新的矩阵居然并不会发生类似的情况。
冥思苦想(百度)了一上午之后,我发现上述操作只是浅层拷贝,而要达到新生成的矩阵与原矩阵没有关联,则需要进行深层拷贝。
具体操作举例如下:
post_data=np.array(pre_data[:,0:98], copy=True)
当然还有更多的操作这里就不列举了!