探索数据宇宙之飞船 -- python进阶函数numpy

        导读:NumPy以其强大的多维数组对象和广泛的数学函数库著称。这些特性使得NumPy成为不仅在学术研究,也在工业界广泛应用的工具。无论是机器学习算法的开发、数据分析、还是复杂的数学模型的构建,NumPy都扮演着举足轻重的角色。

目录

Numpy简介

NumPy的诞生与发展

核心特性:多维数组对象

数学函数和广播机制

性能优化:底层C语言和内存连续存储

NumPy数据处理

高效的数组操作

与Pandas的配合使用

NumPy函数功能

创建数组

数组形状和重塑

数组索引和切片

数学运算

统计函数

线性代数

利用NumPy解决实际问题

图像处理:使用NumPy进行基本图像操作

信号处理:使用NumPy进行傅里叶变换

金融数据分析:使用NumPy进行数据建模

NumPy背后

求解特征值和特征向量

解决实际问题的创新方法

结语


Numpy简介

        如果你是纯新手可以看看,实践派可以滑到下一部分

NumPy的诞生与发展

        NumPy,全称Numerical Python,是一个开源项目,旨在于2005年为Python语言提供强大的科学计算功能。由于其前身是1995年的Numeric,NumPy实际上承载了超过两个十年的科学计算发展历史。NumPy的出现使得Python从一个通用编程语言转变为了一个强大的科学计算平台,让Python在学术和工业界的应用达到了一个全新的水平。

        哦对了,Python之所以成为最受欢迎的编程语言之一,其强大的科学计算能力功不可没。在这方面,NumPy的贡献尤为突出。它不仅自身功能强大,还能与其他库如Pandas、SciPy、Matplotlib等无缝集成,形成了一个强大的科学计算生态环境。

核心特性:多维数组对象

        NumPy的核心是ndarray对象,即N维数组。这一数据结构可以容纳同质的数据类型,是高效存储和操作大规模数值数据的理想工具。与Python原生的列表相比,ndarray不仅在存储和计算效率上有显著优势,而且提供了丰富的操作和数学函数,可以轻松实现复杂的数组操作。

数学函数和广播机制

        NumPy提供了大量的数学函数,包括但不限于统计、代数、逻辑运算等,这些都是数据分析和科学计算不可或缺的工具。此外,NumPy的广播机制是其另一大特色,它允许不同形状的数组之间进行数学运算,极大地增加了编程的灵活性和表达能力。

性能优化:底层C语言和内存连续存储

        NumPy的高性能部分得益于其底层是用C语言编写的,这使得它在执行速度上可以媲美传统的编译语言。同时,NumPy数组采用连续的内存块,这优化了缓存的使用并降低了内存访问的开销,从而大大提高了数据处理的效率。

NumPy数据处理

高效的数组操作

        在数据科学中,高效地处理和操作大规模数据集是基本需求。NumPy提供了强大的数组操作功能,使得这一过程变得简单高效。例如,假设我们需要对一个大型数组进行数学运算:

import numpy as np# 创建一个大型数组
array = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])# 对数组进行运算
array_squared = array ** 2  # 数组中每个元素的平方print(array_squared)

与Pandas的配合使用

        NumPy与Pandas库紧密协作,提供了一整套强大的数据处理工具。Pandas提供了DataFrame对象,它在NumPy的基础上增加了更多的功能,如处理缺失数据、时间序列分析等。例如,将NumPy数组转换为Pandas DataFrame:

import pandas as pd# 将NumPy数组转换为Pandas DataFrame
df = pd.DataFrame(array, columns=['Numbers'])
print(df)

NumPy函数功能

NumPy提供了大量的函数和功能来处理和分析数据,我们拿一些来看看

创建数组

import numpy as np# 创建一个一维数组
arr1 = np.array([1, 2, 3, 4])
print("一维数组:", arr1)# 创建一个二维数组
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print("二维数组:\n", arr2)# 创建一个全零数组
zeros = np.zeros((3, 3))
print("全零数组:\n", zeros)# 创建一个全一数组
ones = np.ones((2, 2))
print("全一数组:\n", ones)# 创建一个单位矩阵(对角线为1)
identity_matrix = np.eye(3)
print("单位矩阵:\n", identity_matrix)

数组形状和重塑

# 查看数组形状
print("arr2的形状:", arr2.shape)# 重塑数组
reshaped = arr2.reshape(3, 2)
print("重塑后的数组:\n", reshaped)

数组索引和切片

# 索引
print("arr1中的第二个元素:", arr1[1])# 切片
print("arr2的第一行:", arr2[0, :])
print("arr2的第二列:", arr2[:, 1])

数学运算

# 数组相加
addition = np.add(arr1, [1, 1, 1, 1])
print("数组相加:", addition)# 数组相减
subtraction = np.subtract(arr1, [1, 1, 1, 1])
print("数组相减:", subtraction)# 数组相乘
multiplication = arr1 * 2
print("数组相乘:", multiplication)# 数组除法
division = arr1 / 2
print("数组除法:", division)

统计函数

# 数组最大值
max_value = np.max(arr1)
print("最大值:", max_value)# 数组最小值
min_value = np.min(arr1)
print("最小值:", min_value)# 数组的平均值
mean_value = np.mean(arr1)
print("平均值:", mean_value)# 数组的中位数
median_value = np.median(arr1)
print("中位数:", median_value)

线性代数

# 矩阵乘法
matrix_product = np.dot(arr2, np.array([[1, 1], [1, 1], [1, 1]]))
print("矩阵乘法:\n", matrix_product)# 计算行列式
determinant = np.linalg.det(identity_matrix)
print("行列式:", determinant)# 计算逆矩阵
inverse_matrix = np.linalg.inv(identity_matrix)
print("逆矩阵:\n", inverse_matrix)

利用NumPy解决实际问题

图像处理:使用NumPy进行基本图像操作

        在图像处理中,图像可以被视为数字数组。借助NumPy,我们可以执行各种图像处理任务。下面我们演示如何使用NumPy对图像进行反转和灰度转换

import numpy as np
import matplotlib.pyplot as plt# 创建一个简单的信号,包含两个不同频率的正弦波
t = np.linspace(0, 1, 400, endpoint=False)
signal = np.sin(2 * np.pi * 5 * t) + np.sin(2 * np.pi * 10 * t)# 应用快速傅里叶变换
fft = np.fft.fft(signal)# 获取频率
frequencies = np.fft.fftfreq(len(fft))# 绘制频谱
plt.plot(frequencies, np.abs(fft))
plt.show()

信号处理:使用NumPy进行傅里叶变换

        傅里叶变换是信号处理中的一种关键技术,用于分析不同频率的信号。NumPy提供了快速傅里叶变换(FFT)功能,允许我们轻松实现这一点。

import numpy as np
import matplotlib.pyplot as plt# 创建一个简单的信号,包含两个不同频率的正弦波
t = np.linspace(0, 1, 400, endpoint=False)
signal = np.sin(2 * np.pi * 5 * t) + np.sin(2 * np.pi * 10 * t)# 应用快速傅里叶变换
fft = np.fft.fft(signal)# 获取频率
frequencies = np.fft.fftfreq(len(fft))# 绘制频谱
plt.plot(frequencies, np.abs(fft))
plt.show()

金融数据分析:使用NumPy进行数据建模

        在金融领域,NumPy可用于各种数据分析和建模任务。比如,我们可以使用NumPy来计算股票回报的均值和标准差.

import numpy as np# 假设这是过去五天的股票价格 
stock_prices = np.array([100, 101, 102, 103, 104])# 计算每日回报
returns = stock_prices[1:] / stock_prices[:-1] - 1# 计算均值和标准差
mean_return = np.mean(returns)
std_return = np.std(returns)print("平均回报:", mean_return)
print("回报的标准差:", std_return)

NumPy背后

        NumPy不仅是一个功能强大的库,它也提供了一个窗口,让我们可以深入探索数学和科学计算的原理。例如,使用NumPy进行矩阵运算和线性代数操作,不仅可以提高我们的计算效率,还可以帮助我们更好地理解这些概念在数学上的含义和应用。

求解特征值和特征向量

看看这段代码:

import numpy as np# 创建一个矩阵
matrix = np.array([[2, 3], [1, 4]])# 计算特征值和特征向量
eigenvalues, eigenvectors = np.linalg.eig(matrix)print("特征值:", eigenvalues)
print("特征向量:\n", eigenvectors)

解决实际问题的创新方法

        在机器学习中,NumPy数组可用于存储和操作大量的特征数据,帮助构建和训练模型。

import numpy as np
from sklearn.linear_model import LinearRegression# 假设有一组数据
X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
y = np.dot(X, np.array([1, 2])) + 3# 使用线性回归模型
model = LinearRegression().fit(X, y)
print("模型系数:", model.coef_)

结语

        NumPy的另一个有趣方面是其庞大而活跃的社区。无数的开发者和用户不断地贡献代码、分享知识和经验,推动NumPy的发展。无论是通过在线论坛、GitHub还是专门的教程和书籍,NumPy社区都提供了丰富的学习资源,使得任何人都能更深入地理解和使用这个强大的工具。

-------------------

看开心了   点赞支持一下吧~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/234566.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

node.js mongoose aggregate

目录 官方文档 简述 Aggregate的原型方法 aggregate进行操作 官方文档 Mongoose v8.0.3: Aggregate 简述 在 Mongoose 中,Aggregate 是用于执行 MongoDB 聚合操作的类。MongoDB 聚合操作是一种强大的数据处理工具,可以用于对集合中的文档进行变换和…

星融元中标华夏银行项目,助力金融数据中心可视网建设工作

近日,星融元成功入围华夏银行国产品牌网络流量汇聚分流器(TAP)设备供应商,在助力头部金融机构构建数据中心可视网络的建设工作中,星融元又一次获得全国性股份制银行客户的青睐。 华夏银行作为全国性股份制商业银行积极…

JS 实现带手柄自由调整页面大小的功能

当你想实现点击并拖动某个dic元素来调整其大小的时候&#xff0c;我们可以通过如下代码(可直接复制粘贴运行)实现效果&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport&qu…

2-负载均衡、反向代理

负载均衡、反向代理 upstream server即上游服务器&#xff0c;指Nginx负载均衡到的处理业务的服务器&#xff0c;也可以称之为real server,即真实处理业务的服务器。 对于负载均衡我们要关心的几个方面如下&#xff1a; 上游服务器配置&#xff1a;使用upstream server配置上…

ansible的脚本------playbook剧本

playbook组成部分&#xff1a; 1.task 任务&#xff1a;包含要在目标主机上执行的操作&#xff0c;使用模块定义这些操作。每个都是一个模块的调用。2.variables 变量&#xff1a;存储和传递数据。变量可以自定义&#xff0c;可以在playbook当中定义为全局变量&#xff0c;也可…

SQL server 计算分月,分年,分季度的同环比

SQL server 计算分月&#xff0c;分年&#xff0c;分季度的环比 --- dbo.ads_product_category_sale_money_yoy_mom_month-- Insert statements for procedure here-- 开始 TRY 块 BEGIN TRY -- 执行可能引发异常的 SQL 语句 DELETE FROM dbo.ads_product_category_sale_mo…

Navicat16的下载与安装

Navicat16的下载与安装 1、官网下载地址&#xff1a;https://www.navicat.com.cn/download/navicat-premium 当然有的朋友在官网下载比较慢&#xff0c;我也为大家准备好了百度网盘链接 链接&#xff1a;https://pan.baidu.com/s/1dUcTSHr3761Oayh0-WfolA?pwdwfpl 提取码&am…

LCD12864(St7920/St7921)+超声波测距模块+STC89C52

/******************************************************************************/ /* 晶振&#xff1a;11.0592M */ /* 接线&#xff1a;模块TRIG接 P1.2 ECH0 接P1.1 …

Nature Commun|ATAC-seq探究复发性小儿B系急性淋巴细胞白血病的染色质可及性图谱

表观基因组学分析是解释非编码基因组功能的重要方法之一。表观基因组学特征作为肿瘤细胞的基本特征&#xff0c;对发病机制、临床行为和治疗具有影响。在所有表观基因组标记中&#xff0c;组蛋白修饰和 DNA 甲基化已得到最广泛的研究&#xff0c;以深入了解表观基因组失调。 染…

openpyxl: Value must be either numerical or a string containing a wildcard

openpyxl: Value must be either numerical or a string containing a wildcard&#xff1a;https://blog.csdn.net/ppdyhappy/article/details/132622946 https://q.cnblogs.com/q/143264/ 后排查在其他电脑上相同的py脚本&#xff0c;相同的excel文件&#xff0c;程序正常;…

车辆违规实线变道检测系统:融合Gold-YOLO改进YOLOv8

1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 研究背景与意义 随着城市化进程的加快和交通工具的普及&#xff0c;道路交通安全问题日益凸显。其中&#xff0c;车辆违规实线变道是导致交通事故的重要原因之一。在道路上&…

【办公软件】C# NPOI 操作Excel 案例

文章目录 1、加入NPOI 程序集&#xff0c;使用nuget添加程序集2、引用NPOI程序集3、设置表格样式4、excel加载图片5、导出excel 1、加入NPOI 程序集&#xff0c;使用nuget添加程序集 2、引用NPOI程序集 private IWorkbook ExportExcel(PrintQuotationOrderViewModel model){//…

虾皮电商 电商平台:东南亚最大的跨境电商平台

虾皮电商&#xff08;Shopee&#xff09;是新加坡的一家跨境电商平台&#xff0c;隶属于Sea Group公司。虾皮电商以其强大的社交功能和便捷的物流服务而闻名&#xff0c;为卖家和买家提供了出色的交易体验。本文将介绍虾皮电商的发展历程、优势以及为卖家提供的一站式解决方案。…

JVM征服面试篇-亿及流量系统设计(学习笔记)

一、如何拆解亿级流量系统-百万级结算系统如何设置JVM 1.先确认如下问题&#xff1a; 2.第一步&#xff1a;确定业务背景和核心流程 3.第二步&#xff1a;确认系统的压力在哪里 3.第三步&#xff1a;确定QPS 4.第四步&#xff1a;确定单笔订单耗时&#xff0c;寻找性能瓶颈 5.…

【Spring Cloud】集成分布式事务Seata2.0.0

Seata配置篇 下载seata-server 下载地址&#xff1a;Releases seata/seata GitHub 创建库导入SQL 在/script/server/db下的dm.sql下导入即可。具体的SQL如下 -- -------------------------------- The script used when storeMode is db -------------------------------…

金蝶报表二开

本案例描述&#xff1a; 折旧明细报表中加入字段&#xff1a;存放地点、成本中心部门、使用人组织三个字段。 参考社区案例&#xff1a;报表二次开发添加自定义字段的指导方案 步骤&#xff1a; 1、加入报表插件 继承原报表的类。重写BuilderReportSqlAndTempTable、GetRe…

MyBatis 运行原理

MyBatis框架在操作数据库时&#xff0c;大体经过了8个步骤&#xff1a; 1.读取 MyBatis 配置文件&#xff1a;mybatis-config.xml 为 MyBatis 的全局配置文件&#xff0c;配置了 MyBatis 的运行环境等信息&#xff0c;例如数据库连接信息。 2.加载映射文件&#xff1a;映射文…

JDBC编程(主要针对其流程)

JDBC编程 注&#xff1a;在本篇博客中&#xff0c;使用的数据库是mysql&#xff01;&#xff01;&#xff01; 一、JDBC编程六步 1、注册驱动 这步就是在告诉Java程序&#xff0c;即将要连接的为哪个品牌的数据库&#xff0c; 这里有两种方法 ① //就是使用一个了多态&am…

关于iOSAPP的侧滑功能我有话说

关于iOSAPP的侧滑功能我有话说 什么是iOS的侧滑&#xff0c;就是iOS系统自带一个右滑返回 它的优点是效果好比较丝滑&#xff0c;不好的点就是关于使用的说明网络上很多文章都没有说清楚&#xff0c;今天就来聊聊这个功能 iOS的侧滑怎么启用呢&#xff1f; 为了作用到你后面…

Dokit 开源库:简化 Android 应用开发的利器

Dokit 开源库&#xff1a;简化 Android 应用开发的利器 一、Dokit 简介二、Dokit 功能三、Dokit 使用3.1 DoKit Android 最新版本3.2 DoKit Android 接入步骤 四、总结 在 Android 应用开发过程中&#xff0c;我们经常需要处理调试、性能优化和用户体验等方面的问题。然而&…