Spec-Zone.ru › NumPy 1.15

numpy.ndarray.resize

ndarray.resize(new_shape, refcheck=True)

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

Параметры:
new_shape : tuple of ints, or n ints

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

refcheck : bool, optional

Если 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.15.4/reference/generated/numpy.ndarray.resize.html

Spec-Zone.ru

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