- NumPy 教程
- NumPy - 首页
- NumPy - 简介
- NumPy - 环境
- NumPy 数组
- NumPy - Ndarray 对象
- NumPy - 数据类型
- NumPy 创建和操作数组
- NumPy - 数组创建例程
- NumPy - 数组操作
- NumPy - 从现有数据创建数组
- NumPy - 从数值范围创建数组
- NumPy - 迭代数组
- NumPy - 重塑数组
- NumPy - 连接数组
- NumPy - 堆叠数组
- NumPy - 分割数组
- NumPy - 展平数组
- NumPy - 转置数组
- NumPy 索引和切片
- NumPy - 索引和切片
- NumPy - 高级索引
- NumPy 数组属性和操作
- NumPy - 数组属性
- NumPy - 数组形状
- NumPy - 数组大小
- NumPy - 数组步幅
- NumPy - 数组元素大小
- NumPy - 广播
- NumPy - 算术运算
- NumPy - 数组加法
- NumPy - 数组减法
- NumPy - 数组乘法
- NumPy - 数组除法
- NumPy 高级数组操作
- NumPy - 交换数组的轴
- NumPy - 字节交换
- NumPy - 复制和视图
- NumPy - 元素级数组比较
- NumPy - 过滤数组
- NumPy - 连接数组
- NumPy - 排序、搜索和计数函数
- NumPy - 搜索数组
- NumPy - 数组的并集
- NumPy - 查找唯一行
- NumPy - 创建日期时间数组
- NumPy - 二元运算符
- NumPy - 字符串函数
- NumPy - 数学函数
- NumPy - 统计函数
- NumPy - 矩阵库
- NumPy - 线性代数
- NumPy - Matplotlib
- NumPy - 使用 Matplotlib 绘制直方图
- NumPy - NumPy 的 I/O
- NumPy 排序和高级操作
- NumPy - 排序数组
- NumPy - 沿轴排序
- NumPy - 使用花式索引排序
- NumPy - 结构化数组
- NumPy - 创建结构化数组
- NumPy - 操作结构化数组
- NumPy - 字段访问
- NumPy - 记录数组
- Numpy - 加载数组
- Numpy - 保存数组
- NumPy - 将值追加到数组
- NumPy - 交换数组的列
- NumPy - 向数组插入轴
- NumPy 处理缺失数据
- NumPy - 处理缺失数据
- NumPy - 识别缺失值
- NumPy - 删除缺失数据
- NumPy - 估算缺失数据
- NumPy 性能优化
- NumPy - 使用数组进行性能优化
- NumPy - 使用数组进行矢量化
- NumPy - 数组的内存布局
- Numpy 线性代数
- NumPy - 线性代数
- NumPy - 矩阵库
- NumPy - 矩阵加法
- NumPy - 矩阵减法
- NumPy - 矩阵乘法
- NumPy - 元素级矩阵运算
- NumPy - 点积
- NumPy - 矩阵求逆
- NumPy - 行列式计算
- NumPy - 特征值
- NumPy - 特征向量
- NumPy - 奇异值分解
- NumPy - 求解线性方程组
- NumPy - 矩阵范数
- NumPy 元素级矩阵运算
- NumPy - 求和
- NumPy - 平均值
- NumPy - 中位数
- NumPy - 最小值
- NumPy - 最大值
- NumPy 集合运算
- NumPy - 唯一元素
- NumPy - 交集
- NumPy - 并集
- NumPy - 差集
- NumPy 有用资源
- NumPy 编译器
- NumPy - 快速指南
- NumPy - 有用资源
- NumPy - 讨论
NumPy - 数组形状
NumPy 数组形状
NumPy 数组的形状是一个整数元组。元组中的每个整数表示数组沿特定维度或轴的大小。例如,形状为 (3, 4) 的数组有 3 行 4 列。
- 对于二维数组,形状是一个有两个元素的元组:行数、列数。
- 对于三维数组,形状是一个有三个元素的元组:深度、行数、列数。
- 更高维度的数组遵循相同的模式,每个维度的尺寸都作为元组中的一个额外元素表示。
访问数组形状
可以使用shape属性访问 NumPy 数组的形状。此属性返回一个整数元组,每个整数表示数组沿特定维度的尺寸。
示例
在以下示例中,我们创建一个二维数组,并使用 NumPy 的“shape”属性获取其形状:
import numpy as np # Creating a 2D array array = np.array([[1, 2, 3], [4, 5, 6]]) # Accessing the shape print("Shape of the array:", array.shape) print("Number of dimensions:", array.ndim) print("Total number of elements:", array.size)
形状 (2, 3) 表示数组有 2 行 3 列。它是一个二维数组:
Shape of the array: (2, 3) Number of dimensions: 2 Total number of elements: 6
更改数组形状
更改 NumPy 数组的形状是指转换数组的维度而不更改其数据。例如,可以将一维数组重塑为二维数组,反之亦然,只要元素总数保持不变。
要重塑 NumPy 中的数组,我们使用reshape()函数。如果可能,此函数将返回具有指定形状的数组的新视图。如果无法使用视图进行重塑,则会创建数组的副本。
示例
在此示例中,我们通过将“-1”作为参数传递给 Numpy reshape() 函数,将二维数组的形状更改为一维数组。这会自动推断一个维度的尺寸:
import numpy as np # Creating a 2D array array_2d = np.array([[1, 2, 3], [4, 5, 6]]) print("Original 2D array:\n", array_2d) # Reshaping to a 1D array array_flattened = array_2d.reshape(-1) print("Flattened to 1D array:", array_flattened)
这将产生以下结果:
Original 2D array: [[1 2 3] [4 5 6]] Flattened to 1D array: [1 2 3 4 5 6]
处理重塑错误
有时,如果 NumPy 中的数组重塑使用不正确,可能会导致错误。当尝试将数组重塑为与数组中元素总数不兼容的形状时,就会发生此错误。
重塑时元素总数必须保持不变。如果重塑操作与元素总数不兼容,NumPy 将引发ValueError。
示例:不兼容的形状错误
当尝试将数组重塑为与数组中元素总数不兼容的形状时,会发生不兼容的形状错误。
在下面的示例中,原始数组有“12”个元素。将其重塑为形状“(3, 5)”需要 15 个元素,这会导致 ValueError:
import numpy as np # Creating an array with 12 elements array = np.arange(12) # Attempting to reshape into a shape that requires more elements try: reshaped_array = array.reshape((3, 5)) except ValueError as e: print("Error:", e)
以下是上述代码的输出:
Error: cannot reshape array of size 12 into shape (3,5)
示例:负维度错误
在重塑维度中使用-1告诉 NumPy 自动计算该维度的尺寸。但是,如果剩余的维度与元素总数不匹配,则会引发错误:
import numpy as np # Creating an array with 10 elements array = np.arange(10) # Attempting to reshape with an incompatible automatic dimension try: reshaped_array = array.reshape((2, -1, 4)) except ValueError as e: print("Error:", e)
获得的输出如下所示:
Error: cannot reshape array of size 10 into shape (2,newaxis,4)
示例:维度规范不正确
指定不正确或非整数维度值(例如,-1 以外的负值或非整数)会导致错误:
import numpy as np # Creating an array with 16 elements array = np.arange(16) # Attempting to reshape with an invalid dimension try: reshaped_array = array.reshape((4, 4.5)) except ValueError as e: print("Error:", e)
执行上述代码后,我们将获得以下输出:
Traceback (most recent call last): File "/home/cg/root/669f5fd83ed84/main.py", line 8, in <module> reshaped_array = array.reshape((4, 4.5)) TypeError: 'float' object cannot be interpreted as an integer
广告