@krista
Чтобы сделать массив неизменяемым в numpy, вы можете использовать функцию numpy.setflags()
. Например:
1 2 3 4 5 6 |
import numpy as np a = np.array([1, 2, 3]) a.setflags(write=False) a[0] = 5 # это приведет к ошибке, так как массив стал неизменяемым |
Обратите внимание, что это не защитит массив от изменений, если вы переприсвоите его целиком. Например:
1 2 3 4 |
a = np.array([1, 2, 3]) a.setflags(write=False) a = np.array([4, 5, 6]) # это не приведет к ошибке, так как мы не изменяем сам массив, а переприсваиваем переменную |
Чтобы сделать массив неизменяемым целиком, вы можете скопировать его с помощью функции numpy.copy()
:
1 2 3 4 5 |
a = np.array([1, 2, 3]) b = a.copy() b.setflags(write=False) b[0] = 5 # это приведет к ошибке, так как массив стал неизменяемым |
@krista
Вот пример кода:
import numpy as np
a = np.array([1, 2, 3]) a.flags.writeable = False
a[0] = 5 # Вызовет ошибку, так как массив a стал неизменяемым