numpy.ascontiguousarray
numpy.ascontiguousarray(a, dtype=None) [source]
参数: | a : 输入数组。 dtype : 返回数组的数据类型。 |
返回值: | out : 相同的shape和含量的连续数组一个, 与类型dtype 如果指定。 |
例子
1)基本用法
import numpy as np # 创建一个二维数组 a = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.int32) # 查看数组是否是连续存储的 print(a.flags['C_CONTIGUOUS']) # 输出:True # 将数组转换为连续存储的数组 b = np.ascontiguousarray(a) # 查看新数组是否是连续存储的 print(b.flags['C_CONTIGUOUS']) # 输出:True
2)非连续存储数组
import numpy as np # 创建一个非连续存储的数组 a = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.int32) b = a.T # 转置数组,使其在内存中非连续存储 # 查看数组是否是连续存储的 print(b.flags['C_CONTIGUOUS']) # 输出:False # 将数组转换为连续存储的数组 c = np.ascontiguousarray(b) # 查看新数组是否是连续存储的 print(c.flags['C_CONTIGUOUS']) # 输出:True
3)改变数据类型
import numpy as np # 创建一个数组 a = np.array([[1.1, 2.2, 3.3], [4.4, 5.5, 6.6]], dtype=np.float64) # 将数组转换为连续存储的,并更改数据类型为整数 b = np.ascontiguousarray(a, dtype=np.int32) print(b) print(b.dtype) # 输出:int32 print(b.flags['C_CONTIGUOUS']) # 输出:True
4)使用示例
import numpy as np # 创建一个包含0到5的数组,并将其重塑为2行3列的数组 x = np.arange(6).reshape(2, 3) # 将数组转换为连续存储的数组,并将数据类型更改为float32 y = np.ascontiguousarray(x, dtype=np.float32) # 输出转换后的数组 print(y) # 输出: # array([[0., 1., 2.], # [3., 4., 5.]], dtype=float32) # 检查原数组是否是连续存储的 print(x.flags['C_CONTIGUOUS']) # 输出:True
注意:此函数返回一个至少具有一维(1-d)的数组,因此它将不保留0-d数组。