当前位置: 首页 > java >正文

Numpy 数组操作:高效的数据处理利器

在数据分析和科学计算领域,Numpy 是 Python 中不可或缺的库之一。它提供了强大的多维数组对象以及大量用于操作这些数组的函数。本文将详细介绍 Numpy 数组的基本操作,包括数组的创建、索引、切片、形状变换、数组运算等,帮助你快速掌握 Numpy 的核心功能。

一、Numpy 数组的创建

Numpy 提供了多种创建数组的方法(前面有具体写过),最常用的是通过 numpy.array() 函数。

import numpy as np# 从列表创建数组
list_data = [1, 2, 3, 4, 5]
array_from_list = np.array(list_data)
print("从列表创建的数组:", array_from_list)# 创建多维数组
nested_list = [[1, 2, 3], [4, 5, 6]]
multi_dim_array = np.array(nested_list)
print("多维数组:\n", multi_dim_array)

注释:

  • np.array() 是创建数组的核心函数,它接受一个可迭代对象作为输入。

  • 多维数组可以通过嵌套列表创建。

二、数组的基本属性

Numpy 数组具有多个重要属性,如形状(shape)、维度(ndim)和数据类型(dtype)。

# 查看数组属性
print("数组形状:", multi_dim_array.shape)  # 输出 (2, 3)
print("数组维度:", multi_dim_array.ndim)   # 输出 2
print("数组数据类型:", multi_dim_array.dtype)  # 输出 int64

注释:

  • shape 属性返回一个元组,表示数组的维度大小。

  • ndim 表示数组的维度数量。

  • dtype 表示数组中元素的数据类型。

三、数组的索引与切片

Numpy 数组的索引和切片与 Python 列表类似,但功能更强大。

# 一维数组索引
print("一维数组索引:", array_from_list[2])  # 输出 3# 多维数组索引
print("多维数组索引:", multi_dim_array[1, 2])  # 输出 6# 一维数组切片
print("一维数组切片:", array_from_list[1:4])  # 输出 [2, 3, 4]# 多维数组切片
print("多维数组切片:\n", multi_dim_array[:, 1:3])  # 输出 [[2, 3], [5, 6]]

注释:

  • 一维数组的索引和切片与 Python 列表类似。

  • 多维数组的索引需要使用多个索引值,切片操作可以通过 : 来指定范围。

四、数组的形状变换

Numpy 提供了多种方法来改变数组的形状,而不会改变其数据。

# 改变数组形状
original_array = np.array([1, 2, 3, 4, 5, 6])
reshaped_array = original_array.reshape(2, 3)
print("改变形状后的数组:\n", reshaped_array)# 转置数组
transposed_array = reshaped_array.T
print("转置后的数组:\n", transposed_array)

注释:

  • reshape() 方法可以将数组重新组织成指定的形状。

  • T 属性可以快速转置数组。

五、数组的运算

Numpy 数组支持元素级的运算,这使得它在处理大规模数据时非常高效。

# 数组加法(对应位置相互运算)
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
result_add = array1 + array2
print("数组加法:", result_add)  # 输出 [5, 7, 9]# 数组乘法(对应位置相互运算)
result_mul = array1 * array2
print("数组乘法:", result_mul)  # 输出 [4, 10, 18]# 广播机制(“转换成”对应位置相互运算)
array3 = np.array([[1, 2, 3], [4, 5, 6]])
scalar = 2
result_broadcast = array3 + scalar
print("广播机制:\n", result_broadcast)

注释:

  • Numpy 数组的加法和乘法是元素级的。

  • 广播机制允许较小的数组在运算中自动扩展为较大的数组。

六、数组的统计方法

Numpy 提供了许多统计方法,如求和、平均值、最大值等。

# 求和
print("数组求和:", array3.sum())  # 输出 21# 平均值
print("数组平均值:", array3.mean())  # 输出 3.5# 最大值
print("数组最大值:", array3.max())  # 输出 6# 按轴操作
print("按轴求和:", array3.sum(axis=1))  # 输出 [6, 15]

注释:

  • sum()mean()max() 等方法可以对整个数组进行统计。

  • 使用 axis 参数可以指定按行或按列进行操作。

七、数组的布尔索引

布尔索引是 Numpy 的强大功能之一,它允许我们根据条件筛选数据。

# 布尔索引
array4 = np.array([1, 2, 3, 4, 5])
condition = array4 > 3
filtered_array = array4[condition]
print("布尔索引结果:", filtered_array)  # 输出 [4, 5]

注释:

  • 布尔索引通过条件表达式生成布尔数组,然后用布尔数组来筛选数据。

八、数组的合并与拆分

Numpy 提供了多种方法来合并和拆分数组。

# 数组合并
array_a = np.array([1, 2, 3])
array_b = np.array([4, 5, 6])
concatenated_array = np.concatenate((array_a, array_b))
print("合并后的数组:", concatenated_array)  # 输出 [1, 2, 3, 4, 5, 6]# 数组拆分
split_arrays = np.split(concatenated_array, 2)
print("拆分后的数组:", split_arrays)  # 输出 [array([1, 2, 3]), array([4, 5, 6])]

注释:

  • np.concatenate() 用于合并数组。

  • np.split() 用于将数组拆分成多个子数组。

九、总结

Numpy 是 Python 中处理数值数据的核心库,它提供了高效、灵活的数组操作功能。通过本文的介绍,你应该已经掌握了 Numpy 数组的创建、索引、切片、形状变换、运算、统计方法、布尔索引以及合并与拆分等基本操作。这些功能将为你的数据分析和科学计算工作提供强大的支持。

如果你对 Numpy 的其他高级功能感兴趣,如随机数生成、线性代数运算等,可以继续深入学习。希望本文对你有所帮助!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

http://www.xdnf.cn/news/9959.html

相关文章:

  • 【AI赋能,视界升级】智微智能S134 AI OPS,重构智慧大屏未来
  • 『uniapp』添加桌面长按快捷操作 shortcuts(详细图文注释)
  • uniapp使用Canvas生成电子名片
  • 华为交换机命令:display css status
  • IDEA 在公司内网配置gitlab
  • 数据湖 (特点+与数据仓库和数据沼泽的对比讲解)
  • cursor rules设置:让cursor按执行步骤处理(分析需求和上下文、方案对比、确定方案、执行、总结)
  • SpringCloud——Docker
  • vscode中让文件夹一直保持展开不折叠
  • Spring Boot3.4.1 集成 mybatis plus
  • Spring Boot 中 @RequestParam 和 @RequestPart 的区别详解(含实际项目案例)
  • 【maker-pdf 文档文字识别(包含ocr),安装使用完整教程】
  • 云原生时代 Kafka 深度实践:03进阶特性与最佳实践
  • 【题解-洛谷】P7795 [COCI 2014/2015 #7] PROSJEK
  • Hive在实际应用中,如何选择合适的JOIN优化策略?
  • 探索三维螺旋线的几何奥秘:曲率与挠率的计算与可视化
  • python学习day33
  • SpringBoot WebMvcConfigurer使用Jackson统一序列化格式化输出
  • DDP与FSDP:分布式训练技术全解析
  • python常用库-pandas、Hugging Face的datasets库(大模型之JSONL(JSON Lines))
  • EasyRTC嵌入式音视频通信SDK助力1v1实时音视频通话全场景应用
  • 图解gpt之Transformer架构与设计原理
  • ONNX模型的动态和静态量化
  • 2024 CKA模拟系统制作 | Step-By-Step | 17、题目搭建-排查故障节点
  • 因泰立科技:镭眸T51激光雷达,打造智能门控新生态
  • 立控信息智能装备柜:科技赋能军队装备管理现代化
  • WindowServer2022下docker方式安装dify步骤
  • 大厂前端研发岗位设计的30道Webpack面试题及解析
  • CAD多边形密堆积2D插件
  • SpringBoot+Vue+微信小程序校园自助打印系统