Я просматривал какой-то непонятный код и столкнулся с этой проблемой.Numpy демонстрирует различное поведение для 1-го массива и 2-го массива.В первом случае создается ссылка, а во втором - глубокая копия.
Вот фрагмент кода
import numpy as np
# Case 1: when using 1d-array
arr = np.array([1,2,3,4,5])
slice_arr = arr[:3] # taking first three elements, behaving like reference
slice_arr[2] = 100 # modifying the value
print(slice_arr)
print (arr) # here also value gets changed
# Case 2: when using 2d-array
arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
slice_arr = arr[:,[0,1]] # taking all rows and first two columns, behaving like deep copy
slice_arr[0,1] = 100 # modifying the value
print(slice_arr)
print() # newline for clarity
print (arr) # here value doesn't change
Кто-нибудь может объяснить причину такого поведения?