Когда размер ndarray не фиксирован? - PullRequest
0 голосов
/ 04 декабря 2018

Документация numpy.ndarray гласит:

ndarray - это (обычно фиксированный размер) многомерный контейнер элементов того же типа и размера.

Я удивлен прилагательным обычно здесь.Я думал, что ndarray всегда имеет фиксированный размер.Когда размер ndarray не фиксирован?

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Вы можете изменить размер ndarray, используя ndarray.resize .Я не использовал это широко, поэтому я не могу говорить о преимуществах или недостатках.Тем не менее, это выглядит довольно просто

>>> a = ones(3)

>>> a.resize(1)

>>> a
array([ 1.])

Тем не менее, кажется, что ошибки возникают довольно часто

>>> a.resize(3)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-34-bc3af9ce5259> in <module>()
----> 1 a.resize(3)

ValueError: cannot resize an array that references or is referenced
by another array in this way.  Use the resize function

Они могут быть подавлены путем ввода refcheck=False.Это говорит NumPy, что вы знаете, что делаете, и нет необходимости проверять, что другие объекты не используют ту же память.Естественно, это может вызвать проблемы, если это не так.

>>> a.resize(3, refcheck=False)

>>> a
array([ 1.,  0.,  0.])

>>> a.resize((2, 2), refcheck=False)

>>> a
Out[39]: 
array([[ 1.,  0.],
       [ 0.,  0.]])
0 голосов
/ 04 декабря 2018

Вам разрешается изменять размеры, поэтому сама память имеет фиксированный размер, но способ ее формирования может быть адаптирован (следовательно, это могут быть не фиксированные размеры).

Вы можете изменить размер массивас resize, но это в основном новый массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...