上一主题

numpy.matrix.reshape

下一主题

numpy.matrix.round

numpy.matrix.resize

matrix.resize(new_shape, refcheck=True)

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

参数:

new_shape:ints的tuple,或n ints

调整数组的形状。

refcheck:bool,可选

如果为False,将不检查引用计数。默认值为True。

返回:

没有

上升:

ValueError

如果a不拥有自己的数据或引用或其视图,则必须更改数据存储器。

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 has been referenced ...

除非refcheck为False:

>>> a.resize((1, 1), refcheck=False)
>>> a
array([[0]])
>>> c
array([[0]])