numpy.recarray.resize#

method

recarray.resize(new_shape, refcheck=True)#

就地更改数组的形状和大小.

参数:
new_shape : 整数元组,或 n 个整数整数元组,或

调整大小后的数组的形状.

refcheckbool, 可选

如果为 False,则不检查引用计数.默认为 True.

返回:
None
提出:
ValueError

如果 a 不拥有自己的数据或引用或其视图存在,并且必须更改数据内存.仅 PyPy:如果必须更改数据内存,则始终会引发异常,因为没有可靠的方法来确定是否存在引用或视图.

SystemError

如果指定了 order 关键字参数. 这是 NumPy 中的一个错误.

参见

resize

返回一个具有指定形状的新数组.

注释

如有必要,这将重新分配数据区域的空间.

只能调整连续数组(数据元素在内存中连续)的大小.

引用计数检查的目的是确保您不将此数组用作另一个 Python 对象的缓冲区,然后重新分配内存. 但是,引用计数可能会以其他方式增加,因此,如果您确定没有与其他 Python 对象共享此数组的内存,则可以安全地将 refcheck 设置为False.

示例

缩小数组:数组被展平(按照数据存储在内存中的顺序),调整大小,并重塑:

>>> import numpy as np
>>> 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]])