我正在尝试创建另一个虚拟环境(我已经使用此处的典型说明安装了一个:http://docs.python-guide.org/en/latest/dev/virtualenvs/)所以我运行:
$ virtualenv experimental
Run Code Online (Sandbox Code Playgroud)
- >程序'virtualenv'目前尚未安装.您可以通过键入以下命令安装它:sudo apt install virtualenv
我查看是否需要更新程序:
$ pip install virtualenv --upgrade
Run Code Online (Sandbox Code Playgroud)
- >要求已经是最新的:virtualenv在/home/uniside/.local/lib/python2.7/site-packages
关于这里发生了什么的任何想法?
据我了解,一个ndarray的深拷贝应该创建ndarray的第二次迭代,以便更改其中一个数组不会影响另一个数组的内容。但是,在以下代码中,我原来的ndarray发生了变化:
print(data[3]) #[array([[0.00000000e+00, 3.29530000e+04],
#[4.00066376e-04, 3.29530000e+04],
#[8.00132751e-04, 3.29530000e+04],
#...,
#[1.28784461e+03, 3.47140000e+04],
#[1.28784621e+03, 3.57750000e+04],
#[1.28785381e+03, 1.92450000e+04]]),
#'CH4.VDC1']
new = np.empty_like(data)
new[:] = data
new[3][0][:,1] = 4/16421 * (data[3][0][:,1] - 33563)
print(data[3]) #[array([[ 0.00000000e+00, -1.48590220e-01],
#[ 4.00066376e-04, -1.48590220e-01],
#[ 8.00132751e-04, -1.48590220e-01],
#...,
#[ 1.28784461e+03, 2.80372694e-01],
#[ 1.28784621e+03, 5.38822240e-01],
#[ 1.28785381e+03, -3.48772913e+00]]),
#'CH4.VDC1']
Run Code Online (Sandbox Code Playgroud)
该数组是混合类型(5,2)数组,其中包含(largenumber,2)子数组。我只是想更改子数组,但我想知道深拷贝是否也扩展到该子数组。我跑了
np.shares_memory(new, data) #false
np.might_share_memory(new,data) #false
Run Code Online (Sandbox Code Playgroud)
可能还需要注意的是,我正在jupyter笔记本中运行此程序。虽然我无法想象为什么它会改变任何东西。您可以使用以下方法重新创建数据:
np.array([[[[0.00000000e+00, 2.82540000e+04],
[4.00066376e-04, 2.82530000e+04],
[8.00132751e-04, 2.82520000e+04],
[1.28784461e+03, 4.61170000e+04],
[1.28784621e+03, 3.38280000e+04],
[1.28785381e+03, 3.38230000e+04]],
'CH1.Bx'],
[[[0.00000000e+00, 2.00400000e+04],
[4.00066376e-04, 2.00400000e+04],
[8.00132751e-04, 2.00410000e+04],
[1.28784461e+03, 1.81600000e+04],
[1.28784621e+03, 1.80830000e+04], …Run Code Online (Sandbox Code Playgroud)