Python numpy.ascontiguousarray函数方法的使用

numpy.ascontiguousarray 是 NumPy 库中的一个函数,用于返回一个连续存储的数组(在内存中是按行优先顺序存储的)。如果输入数组已经是连续的,它将返回输入数组的引用;否则,它会返回一个新的、连续的副本。本文主要介绍一下NumPy中ascontiguousarray方法的使用。

numpy.ascontiguousarray

numpy.ascontiguousarray(a, dtype=None)       [source]

参数

a :array_like

输入数组。

dtype :strdtype对象,可选

返回数组的数据类型。

返回值

outndarray

相同的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数组。

文档numpy.ascontiguousarray.html

推荐阅读
cjavapy编程之路首页