首页app软件python numpy二维数组 python n维数组

python numpy二维数组 python n维数组

圆圆2025-11-11 12:01:20次浏览条评论

深入理解NumPy数组的维度与形状:从一维到多维的创建与转换 2) 详细解释 NumPy 如何通过嵌套列表识别数组维度。同时,本教程将提供许多实用方法,包括使用 ``reshape` 方法、直接修改 ``shape` 属性以及高级索引技巧,帮助用户灵活地创建和转换不同维度的 NumPy 数组。NumPy 数组维度 (ndim) 和形状 (shape)

在 NumPy 中,数组的 ndim 属性表示维度数(轴数),而 shape 属性是一组元素,用于描述每个维度中的元素数量。理解这两个概念对于高效处理数值数据至关重要。

考虑以下 NumPy 数组创建示例:import numpy as np# 创建一个数组 A = np.array([ [-1, 3], [3, 2] ], dtype=np.dtype(float))# 创建一个数组 b = np.array([7, 1], dtype=np.dtype(float))print(";A 的形状: {A.shape}";)print(";A 的维度数: {A.ndim}";)print(";b 的形状: {b.shape}";)print(";b 的维度数: {b.ndim}";)电影后后发

运行以上代码,得到以下输出:A 的形状:(2,2)A 的维度数:2b 的形状:(2,)B 的维度数:数组 b 的形状为 (1 2),表示它是一个二维数组,有 2 行 2 列。而数组 b 的形状为 (2),表示它是一个一维数组,包含 2 个元素。许多初学者可能会误以为数组 b 的形状为 (1). 2),即一个有 1 行 2 列的二维数组。然而,这种理解是错误的,因为 NumPy 对维度有明确的定义。区分一维数组和二维数组

NumPy 通过数组的嵌套层级来识别其维度。

一维数组

当使用扁平数组(或元终)创建 NumPy 数组时,NumPy 会将其视为一维数组。例如,np.array([7, 1]) 中的 [7, 1] 是一个包含两个元素的列表,NumPy 会将其解释为一个包含 2 个元素的一维数组。

因此,它的形状是(2),维度是1。元用中的其号表示它是一个元用,当只有一个元素时,如(2,),是在Python中用元用表示单个元素的方式。

b_1d = np.array([7,1], dtype=float)print(fquot;b_1d: {b_1d}quot;)print(fquot;b_1d 的形状: {b_1d.shape}quot;) # 输出: (2,)print(fquot;b_1d 的维度数: {b_1d.ndim}quot;) # 输出: 1 复制后登录

二维分分

要创建一个二维数组,需要使用嵌套数组。例如,np.array([[7, 1]]) 中的 [[7, 1]] 表示一个包含单个数组的数组。数组的外层表示行,数组的内层表示列。因此,NumPy 将其识别为一个二维数组,具有 1 行 2 列。 b_2d = np.array([[7, 1]]), dtype=float)print(fquot;b_2d: {b_2d}quot;)print(fquot;b_2d 的形状: {b_2d.shape}quot;) # 输出: (1, 2) print(fquot;b_2d 的维度数: {b_2d.ndim}quot;) # 输出: 2 登录后复制

高维数组 飞书多维表

AI 工作流程表形式 无建工作,支持批量大小的 AI 创建和分析任务,访问 DeepSeek R1 满血版 26 查看详情

{b_3d.ndim}quot;) # 输出: 3 登录后,复制并转换数组维度

在实际应用中,我们经常需要转换现有数组的维度以满足不同的计算或数据处理需求。NumPy 提供了多种灵活的方法来实现这一目标。

1. 修改形状属性(原地)

您可以直接修改数组的形状属性。2. 使用 reshape() 方法

reshape() 方法是更推荐的方法,因为它会返回一个具有新形状(如果可能)或副本的数组视图,而不会修改原始数组。这提供了更好的数据完整性控制。b_original = np.array([7, 1],dtype=float)print(fquot;原始 b:{b_original},形状:{b_original.shape}quot;)b_reshaped = b_original.reshape((1, 2). 使用高级索引 None 或 np.newaxis

NumPy 的 None 关键字(或者别名 np.newaxis)可以在指定位置插入一个新的轴,从而增加数组的长度。这在广播操作时尤其有用。

b_original = np.array([7, 1],dtype=float)print(f";原始 b: {b_original},形状: {b_original.shape}";)# 在第一个轴(行)之前插入新轴,将 (N,) 改为 (1,N)b_newaxis_row = b_original[None,:] # 等同于 b_original[np.newaxis,:]print(f";带有新行轴的 b: {b_newaxis_row},形状: {b_newaxis_row.shape}";)# 在现有轴之后插入新轴,将 (N,) 改为 (N, 1)b_newaxis_col = b_original[:,None] # 等同于 b_original[:,np.newaxis]print(f";带有新列轴的 b: {b_newaxis_col},形状: {b_newaxis_col.shape}";)复制后登录

这两种高级索引方法提供了非常灵活的扩展能力:array[None, ...] 或 array[np.newaxis, ...]:在数组开头(第0层)添加一个新层。array[..., None] 或 array[..., np.newaxis]:在数组末尾添加一个新层。:]:在数组中间的特定位置添加一个新层。总结

理解 NumPy 数组的 ndim 和 shape 属性是掌握 NumPy 的基础。2)通过直接修改 shape 属性,使用 reshape() 方法,以及使用 None 或 np.newaxis 进行高级索引,我们可以灵活地在不同维度之间转换数组,以满足各种数据处理和计算需求。熟练运用这些技巧可以极大地提高 NumPy 编程的效率和准确性。

以上是对 NumPy 数组大小和形状的深入理解:从一维到多维的创建和转换细节,更多内容请关注乐哥希内网及其他相关文章!Python 字节码深度分析:异常处理中 END_FINALLY 的机制和行为,Python 如何使用 send 夔醒

深入理解NumPy数
在Java中如何使用PriorityQueue实现优先队列_PriorityQueue操作指南
相关内容
发表评论

游客 回复需填写必要信息