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数组。