Spec-Zone.ru › NumPy 1.14

numpy.recarray.resize

recarray.resize(new_shape, refcheck=True)

Изменение формы и размера массива на месте.

Параметры:

new_shape : кортеж целых чисел или n целые числа

Форма измененного массива.

refcheck : bool, необязательно

Если False, счётчик ссылок не будет проверяться. Значение по умолчанию — True.

Возвращает:

None

Исключения:

ValueError

Если a не владеет собственными данными или существуют ссылки или представления на них, а область данных памяти должна быть изменена. Только PyPy: всегда будет поднимать исключение, если область данных памяти должна быть изменена, так как нет надёжного способа определить, существуют ли ссылки или представления на неё.

SystemError

Если order ключевой параметр указан. Это поведение является ошибкой в NumPy.

См. также

resize
Возвращает новый массив с указанной формой.

Примечания

Это перераспределяет память для области данных, если это необходимо.

Изменение размера возможны только для непрерывных массивов (элементы данных расположены последовательно в памяти).

Цель проверки счётчика ссылок — убедиться, что вы не используете этот массив в качестве буфера для другого объекта Python, а затем не перераспределяете память. Однако счётчики ссылок могут увеличиваться и другими способами, поэтому, если вы уверены, что не делили память этого массива с другим объектом Python, то можете безопасно установить refcheck в значение False.

Примеры

Уменьшение массива: массив сжимается (в порядке хранения данных в памяти), изменяется размер и форма:

>>> a = np.array([[0, 1], [2, 3]], order='C')
>>> a.resize((2, 1))
>>> a
array([[0],
       [1]])
>>> a = np.array([[0, 1], [2, 3]], order='F')
>>> a.resize((2, 1))
>>> a
array([[0],
       [2]])

Увеличение массива: как и выше, но отсутствующие элементы заполняются нулями:

>>> b = np.array([[0, 1], [2, 3]])
>>> b.resize(2, 3) # new_shape parameter doesn't have to be a tuple
>>> b
array([[0, 1, 2],
       [3, 0, 0]])

Ссылка на массив предотвращает изменение размера…

>>> c = a
>>> a.resize((1, 1))
Traceback (most recent call last):
...
ValueError: cannot resize an array that has been referenced ...

Если refcheck имеет значение False:

>>> a.resize((1, 1), refcheck=False)
>>> a
array([[0]])
>>> c
array([[0]])

© 2005–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.14.5/reference/generated/numpy.recarray.resize.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API