NumPy:从初识到实战,探索Python科学计算的无限可能

简介: NumPy:从初识到实战,探索Python科学计算的无限可能

NumPy

在浩瀚的Python编程世界中,有一个强大的库如星辰般璀璨,它是数据科学家、机器学习工程师乃至量化金融分析师手中的利器——NumPy,它以其高效的数据处理能力和便捷的矩阵运算机制,在科研与工程领域中占据着举足轻重的地位。

一、NumPy初识:基石的力量

NumPy(Numerical Python)是Python中最核心的科学计算库之一,提供了一系列高级数学函数,以及对多维数组和矩阵的强大支持。它的基础数据结构numpy.ndarray为海量数据的存储和操作提供了极高的效率,并且无缝对接其他深度学习框架,如TensorFlow、PyTorch等,奠定了Python在数据分析与科学计算领域的基础地位。

二、NumPy功能:领略高效魅力

  1. 快速创建和操作数组:通过简单的API,我们可以轻松创建各种类型的数组,进行元素级操作、统计分析、排序、索引切片等任务,大大提升了开发效率。
  2. ndarray对象:NumPy的核心是一个名为numpy.ndarray的N维数组对象,它支持各种数据类型,并且高效地存储和操作同构数据集合。
  3. 高效的数组运算:NumPy中的数组支持快速的元素级数学运算、逻辑运算以及广播机制,能够以接近C语言的速度进行大规模数据处理。
  4. 矩阵运算:提供对矩阵的各种操作,如加减乘除、转置、求逆、解线性方程组、特征值分解、奇异值分解等。
  5. 数组索引与切片:类似于Python原生列表,但更加灵活,支持高级索引和花式索引。
  6. 统计函数:包含一系列统计学相关函数,例如求和、平均、中位数、标准差、最大值、最小值等。
  7. 排序和筛选:可以对数组进行排序,同时支持条件筛选操作。
  8. 形状变换:允许改变数组的维度和大小,包括reshape、flatten、squeeze、expand_dims等操作。
  9. 文件I/O:支持从磁盘读写多种格式的数据,如二进制、文本或图像文件。
  10. 随机数生成:内置了多个分布的随机数生成器,便于模拟和概率统计实验。

三、NumPy实战:计算最强大脑

创建数组

arr = np.array([1, 2, 3, 4, 5])

数组运算

result = arr1 + arr2

数学函数

result = np.sin(arr)

统计功能

mean = np.mean(arr)

随机数生成

random_arr = np.random.rand(5)

形状操作

reshaped_arr = arr.reshape(1, 4)

索引和切片

sub_arr = arr[2:4]

线性代数运算

result = np.dot(matrix1, matrix2)

数组拼接

concatenated_arr = np.concatenate((arr1, arr2))

数组重复

repeated_arr = np.repeat(arr, 3)

数组排序

sorted_arr = np.sort(arr)

布尔索引

bool_indexing_arr = arr[arr > 3]

数组转置

transposed_arr = arr.T

数组填充

filled_arr = np.full((3, 3), 5)

数组切割

split_arr = np.split(arr, 3)

实例1

import numpy as np
# 创建一个2D数组(矩阵)
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(matrix)
# 对数组进行转置操作
transpose = matrix.T
print(transpose)
# 计算矩阵的行和列的总和
row_sums = np.sum(matrix, axis=1)
col_sums = np.sum(matrix, axis=0)
print(row_sums, col_sums)

实例2

import numpy as np  
# 创建一个NumPy数组  
arr = np.array([5, 2, 8, 1, 9])  
# 对数组进行排序  
sorted_arr = np.sort(arr)  
print("排序后的数组:", sorted_arr)  
# 获取排序后数组的索引  
index = np.argsort(arr)  
print("排序后数组的索引:", index)

实例3

import numpy as np
# 创建一串随机数并计算统计指标
data = np.random.randn(1000)  # 创建一个标准正态分布的随机数组
mean = np.mean(data)  # 计算平均值
median = np.median(data)  # 计算中位数
std_dev = np.std(data)  # 计算标准差
print(f"Mean: {mean}")
print(f"Median: {median}")
print(f"Standard Deviation: {std_dev}")

实例4

import numpy as np
# 创建系数矩阵和常数向量
A = np.array([[2, 1], [1, 3]])
b = np.array([8, 6])
# 使用numpy.linalg.solve求解Ax=b
solution = np.linalg.solve(A, b)
print(solution)

实例5

import numpy as np
# 创建两个NumPy矩阵  
A = np.array([[1, 2], [3, 4]])  
B = np.array([[5, 6], [7, 8]])  
# 进行矩阵加法、减法和乘法运算  
C = A + B  
D = A - B  
E = np.dot(A, B)  
print("矩阵加法结果:\n", C)  
print("矩阵减法结果:\n", D)  
print("矩阵乘法结果:\n", E)

实例6

from PIL import Image
import numpy as np
# 加载图片为numpy数组
img = Image.open("image.jpg")
img_array = np.array(img)
# 图像灰度化
gray_img = np.dot(img_array[...,:3], [0.299, 0.587, 0.114])
gray_img = gray_img.astype(np.uint8)
# 将灰度图保存回文件
Image.fromarray(gray_img).save("gray_image.jpg")

实例7

np.random.rand(): 返回一个在 [0, 1) 之间的随机浮点数。
np.random.randint(low, high, size): 返回一个指定范围内的随机整数数组。
np.random.randn(d0, d1, ..., dn): 返回一个或多个标准正态分布的随机数数组。
np.random.random(size): 返回一个随机浮点数数组,其值在 [0, 1) 之间。
np.random.choice(a, size, replace=True, p=None): 从数组 a 中随机选择元素,或者使用概率 p 进行选择。
np.random.shuffle(x): 将数组 x 的元素顺序随机打乱。
np.random.permutation(x): 返回数组 x 的随机排列
# 除了这些与标准库并不多的,另外还有近30个各种抽取样本的np.random库函数


目录
相关文章
|
17天前
|
存储 缓存 JavaScript
python实战篇:利用request库打造自己的翻译接口
python实战篇:利用request库打造自己的翻译接口
29 1
python实战篇:利用request库打造自己的翻译接口
|
3天前
|
API 数据库 数据安全/隐私保护
Flask框架在Python面试中的应用与实战
【4月更文挑战第18天】Django REST framework (DRF) 是用于构建Web API的强力工具,尤其适合Django应用。本文深入讨论DRF面试常见问题,包括视图、序列化、路由、权限控制、分页过滤排序及错误处理。同时,强调了易错点如序列化器验证、权限认证配置、API版本管理、性能优化和响应格式统一,并提供实战代码示例。了解这些知识点有助于在Python面试中展现优秀的Web服务开发能力。
20 1
|
3天前
|
SQL 中间件 API
Flask框架在Python面试中的应用与实战
【4月更文挑战第18天】**Flask是Python的轻量级Web框架,以其简洁API和强大扩展性受欢迎。本文深入探讨了面试中关于Flask的常见问题,包括路由、Jinja2模板、数据库操作、中间件和错误处理。同时,提到了易错点,如路由冲突、模板安全、SQL注入,以及请求上下文管理。通过实例代码展示了如何创建和管理数据库、使用表单以及处理请求。掌握这些知识将有助于在面试中展现Flask技能。**
11 1
Flask框架在Python面试中的应用与实战
|
4天前
|
SQL 关系型数据库 MySQL
Python与MySQL数据库交互:面试实战
【4月更文挑战第16天】本文介绍了Python与MySQL交互的面试重点,包括使用`mysql-connector-python`或`pymysql`连接数据库、执行SQL查询、异常处理、防止SQL注入、事务管理和ORM框架。易错点包括忘记关闭连接、忽视异常处理、硬编码SQL、忽略事务及过度依赖低效查询。通过理解这些问题和提供策略,可提升面试表现。
25 6
|
7天前
|
数据采集 机器学习/深度学习 数据挖掘
网络数据处理中的NumPy应用实战
【4月更文挑战第17天】本文介绍了NumPy在网络数据处理中的应用,包括数据预处理、流量分析和模式识别。通过使用NumPy进行数据清洗、格式化和聚合,以及处理时间序列数据和计算统计指标,可以有效进行流量分析和异常检测。此外,NumPy还支持相关性分析、周期性检测和聚类分析,助力模式识别。作为强大的科学计算库,NumPy在处理日益增长的网络数据中发挥着不可或缺的作用。
|
7天前
|
Python
用Python的Numpy求解线性方程组
用Python的Numpy求解线性方程组
|
8天前
|
API 调度 开发者
深入理解Python异步编程:从Asyncio到实战应用
在现代软件开发中,异步编程技术已成为提升应用性能和响应速度的关键策略。本文将通过实例讲解Python中的异步编程核心库Asyncio的基本概念、关键功能以及其在Web开发中的应用。我们不仅将理论与实践结合,还将展示如何通过实际代码示例解决常见的并发问题,帮助开发者更有效地利用Python进行异步编程。
|
10天前
|
SQL API 数据库
Python中的SQLAlchemy框架:深度解析与实战应用
【4月更文挑战第13天】在Python的众多ORM(对象关系映射)框架中,SQLAlchemy以其功能强大、灵活性和易扩展性脱颖而出,成为许多开发者首选的数据库操作工具。本文将深入探讨SQLAlchemy的核心概念、功能特点以及实战应用,帮助读者更好地理解和使用这一框架。
|
14天前
|
JavaScript 前端开发 Docker
全栈开发实战:结合Python、Vue和Docker进行部署
【4月更文挑战第10天】本文介绍了如何使用Python、Vue.js和Docker进行全栈开发和部署。Python搭配Flask创建后端API,Vue.js构建前端界面,Docker负责应用的容器化部署。通过编写Dockerfile,将Python应用构建成Docker镜像并运行,前端部分使用Vue CLI创建项目并与后端交互。最后,通过Nginx和另一个Dockerfile部署前端应用。这种组合提升了开发效率,保证了应用的可维护性和扩展性,适合不同规模的企业使用。
|
30天前
|
机器学习/深度学习 数据挖掘 Python
NumPy的基本操作(Python)
NumPy的基本操作(Python)
31 4