繁体   English   中英

python np.array值更改

[英]python np.array value change

我对以下两个print(an_array)语句为什么给出两个不同的结果感到困惑。

尽管在分配过程中b_slice被显式定义为np.array ,但是a_sliceb_slice的类型相同,但使用type命令。但是a-slice会更改an_array的值,而b_slice不会。 如果有人能指出我的解释,我将不胜感激。

an_array = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
a_slice = an_array[:2, 1:3]
print(type(a_slice)) # <class 'numpy.ndarray'>
print(type(b_slice)) # <class 'numpy.ndarray'>
b_slice = np.array(an_array[:2, 1:3]
b_slice[0,0] = 2000
print(an_array) # returns no change to an_array

[[1  2  3  4]
 [5  6  7  8]
 [9 10 11 12]]

a_slice[0,0] = 2000
print(an_array) # shows the change from the number 2 to the number 2000

[[1 2000 3  4]
 [5 6    7  8]
 [9 10  11 12]

因为您通过调用np.array构造函数来显式*复制:

b_slice = np.array(an_array[:2, 1:3])

鉴于:

a_slice = an_array[:2, 1:3]

是切片的结果,与原始列表不同,该切片以numpy 创建视图而不是浅表副本。

注意 *正如@hpaulj指出的那样, np.array构造函数接受一个copy参数,默认为True

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM