numpy.recarray.resize#
method
- recarray.resize(new_shape, refcheck=True)#
就地更改数组的形状和大小.
- 参数:
- new_shape : tuple of ints, or n ints整数元组, 或
调整大小后的数组的形状.
- refcheckbool,可选
如果为 False,则不会检查引用计数. 默认为 True.
- 返回:
- None
- Raises:
- ValueError
如果 a 不拥有自己的数据或引用或视图存在,并且数据内存必须更改. PyPy only:如果数据内存必须更改,则始终会引发异常,因为没有可靠的方法来确定引用或视图是否存在.
- 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]])