Как сделать массив неизменяемым в numpy?

Пользователь

от krista , в категории: Python , месяц назад

Как сделать массив неизменяемым в numpy?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от cayla , месяц назад

@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  # это приведет к ошибке, так как массив стал неизменяемым