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

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

от krista , в категории: Python , 2 года назад

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

от cayla , 2 года назад

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


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

от stanford_mosciski , 8 месяцев назад

@krista 

Вот пример кода:


import numpy as np


a = np.array([1, 2, 3]) a.flags.writeable = False


a[0] = 5 # Вызовет ошибку, так как массив a стал неизменяемым