就地更改数组的形状和大小。
参数:new_shape: : tuple of ints, 或 n ints
调整大小后的数组的形状。
refcheck: : bool, 可选参数
如果为False,则不会检查引用计数。默认值为True。
返回值:None:
异常:ValueError:
如果a不拥有自己的数据或存在对其的引用或视图,则必须更改数据存储器。仅PyPy:如果必须更改数据存储器,将始终升高,因为没有可靠的方法来确定是否存在对其的引用或视图。
SystemError:
如果指定了order关键字参数。此行为是NumPy中的错误。
注意:
如有必要,这将为数据区域重新分配空间。
只能调整连续数组(在内存中连续的数据元素)的大小。
引用计数检查的目的是确保不要将此数组用作另一个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]])