Spec-Zone.ru › NumPy 1.20

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–2021 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.20/reference/generated/numpy.ndarray.resize.html

Spec-Zone.ru

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