Spec-Zone.ru › NumPy 1.18

numpy.ndarray.resize

метод

ndarray.resize(new_shape, refcheck=True)

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

Параметры
new_shapetuple of ints, or n ints

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

refcheckbool, 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 references or is referenced ...

Если refcheck равно False:

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

© 2005–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.18/reference/generated/numpy.ndarray.resize.html

Spec-Zone.ru

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