numpy.core.defchararray.chararray.resize¶
方法
-
chararray.
resize
(new_shape, refcheck=True)¶ 就地更改数组的形状和大小。
参数: - new_shape :整数元组,或 n 英茨 : 整数的元组,或n个整数
已调整大小的数组的形状。
- 再检查 : 可选的布尔
如果为false,则不检查引用计数。默认值为true。
返回: - None
加薪: - ValueError
如果 a 不拥有自己的数据或对其存在的引用或视图,必须更改数据内存。仅PYPY:如果必须更改数据内存,则将始终引发,因为没有可靠的方法来确定对它的引用或视图是否存在。
- SystemError
如果 order 指定了关键字参数。这种行为是 NumPy 缺陷。
参见
resize
- 返回具有指定形状的新数组。
笔记
这会在必要时为数据区域重新分配空间。
只能调整连续数组(内存中连续的数据元素)的大小。
引用计数检查的目的是确保不将此数组用作另一个Python对象的缓冲区,然后重新分配内存。但是,引用计数可能以其他方式增加,因此如果您确定没有与另一个Python对象共享此数组的内存,那么可以安全地设置 refcheck 错了。
实例
收缩数组:数组被展平(按数据存储在内存中的顺序),调整大小并重新整形:
>>> 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 是假的:
>>> a.resize((1, 1), refcheck=False) >>> a array([[0]]) >>> c array([[0]])