python np.array值更改

时间:2017-07-17 16:19:57

标签: python numpy

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

虽然b_slice期间明确定义为np.array 使用a_slice命令,b_slicetype属于同一类型。a-slice会更改an_array的值,b_slicean_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] 不。如果有人能指出我的解释,我会非常感激。

enumerable1.SequenceEqual(enumerable2);

1 个答案:

答案 0 :(得分:3)

因为您通过调用np.array构造函数显式*制作副本:

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

鉴于:

a_slice = an_array[:2, 1:3]

切片的结果是numpy create views而不是浅层副本,与香草列表不同。

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