在 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' 参数。
在 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' 参数。
本文地址:
/show-276862.html
版权声明:除非特别标注原创,其它均来自互联网,转载时请以链接形式注明文章出处。