{site_name}

{site_name}

🌜 搜索

在 NumPy 中,每个数组都有一个形状(shape)和一个步幅(stride),用于描述其在内存中的布局

Python 𝄐 0
numpy生成固定步长的数据,python 布局,python的样子,python步长为负数,python的步长,python设置步长
在 NumPy 中,每个数组都有一个形状(shape)和一个步幅(stride),用于描述其在内存中的布局。形状是指数组在每个维度上具有的元素数量,而步幅是指在不同维度之间移动相邻元素所需的字节数。

举例来说,假设有一个形状为 (3, 4) 的二维数组,其中第一维具有长度 3,第二维具有长度 4。该数组可能是按行存储的(即在内存中连续存储每行的元素),也可能是按列存储的(即在内存中连续存储每列的元素)。这两种存储方式分别称为 C 风格和 Fortran 风格。

对于 C 风格的数组,步幅通常为第一维长度和第二维长度。这意味着移动到相邻行需要跨过整个行的长度,而移动到相邻列仅需要跨过一个元素的长度。对于 Fortran 风格的数组,步幅通常相反,即第二维长度和第一维长度。

以下是一个使用 NumPy 创建数组并打印其形状和步幅的示例:

python
import numpy as np

# 创建一个形状为 (3, 4) 的二维数组
a = np.zeros((3, 4))

# 打印数组的形状和步幅
print("Array shape:", a.shape)
print("Array strides:", a.strides)


输出结果为:


Array shape: (3, 4)
Array strides: (32, 8)


这意味着该数组是按行存储的(C 风格),因为第一维长度为 3,每个元素占据 8 字节(即 float64 类型的字节大小),所以移动到相邻行需要跨过 3 行 * 8 字节/行 = 24 字节的长度,移动到相邻列仅需要跨过一个元素的长度,即 8 字节。

需要注意的是,NumPy 的默认数组存储格式是 C 风格。如果需要使用 Fortran 风格存储数组,可以在创建数组时指定 order='F' 参数。