数据分析学习之numpy

news2024/9/23 23:28:38

引言

        好久没写帖子了,确实变懒了,在这一个月里学习了爬虫,还有seleium自动化技术初步以及数据分析中的numpy,下一步就要学习pandas,但是欠了太多帖子没写,所以现在来补一下,现在来的是numpy的学习!

一.什么是numpy

NumPy 是一个 Python 包。 它代表 “Numeric Python”。 它是一个由多维数组对象和用于处理数组的例程集合组成的库。

Numeric,即 NumPy 的前身,是由 Jim Hugunin 开发的。 也开发了另一个包 Numarray ,它拥有一些额外的功能。 2005年,Travis Oliphant 通过将 Numarray 的功能集成到 Numeric 包中来创建 NumPy 包。 这个开源项目有很多贡献者。

二.numpy操作

使用NumPy,开发人员可以执行以下操作:

  • 数组的算数和逻辑运算。

  • 傅立叶变换和用于图形操作的例程。

  • 与线性代数有关的操作。 NumPy 拥有线性代数和随机数生成的内置函数。

三.numpy中ndarry对象

NumPy 中定义的最重要的对象是称为 ndarray 的 N 维数组类型。 它描述相同类型的元素集合。 可以使用基于零的索引访问集合中的项目。

ndarray中的每个元素在内存中使用相同大小的块。 ndarray中的每个元素是数据类型对象的对象(称为 dtype)。

ndarray对象提取的任何元素(通过切片)由一个数组标量类型的 Python 对象表示。 下图显示了ndarray,数据类型对象(dtype)和数组标量类型之间的关系。

四.创建一个ndarry对象

1.ndarry()

数组转化 

l = [1,2,3,4,5]
n = np.ndarry(l)
print(type(n))   #ndarry

2.zeros(shape,dtype)

创建一个元素全为零的ndarry对象   

n = np.zeros((2,2),dtype = np.int8)
print(n)   

#[0,0
#0,0]

3. ones(shape,dtype)

创建一个元素全为一的ndarry对象   

n = np.ones((2,2),dtype= np.int8)
print(n)

# [1,1
#  1,1]

4.full(shape,fill_value,dtype)

创建一个自定义填充物的ndarry对象 

n = np.full((2,2),fill_value=4,dtype=np.int8)
print(n)

# [4,4
#  4,4]

5.eye(N,M,K=0,dtype)

创建一个对角线的矩阵,N为行数,M为列数(默认为行数),K为偏移量

n = np.eye(3,3,k=1,dtype= np.int8)
print(n)

# [ 0,1,0,
#   0,0,1,
#   0,0,0]

6.linspace(start,end,num,endpoint,retstep,dtyep)

创建一个等差数列ndarry对象

start和end:等差数列的头和尾

num:将等差数列中间的差值分割成为num份

endpoint:是否包含结束值

retstep:是否返回步长

n = np.linspace(5,20,15,dtype = np.int8)
print(n)


#[ 5  6  7  8  9 10 11 12 13 14 15 16 17 18 20]

7.arange((start),end,(step),dtype =None)

类似python中的range函数,这样理解就好多了,创建一个数值范围的数组

n = np.arange(10)
print(n)

#[0 1 2 3 4 5 6 7 8 9]

8.random.randint(low,high,size,dtype)

创建一个任意形状的随机元素数组,简单来说就是可以创建元素随机的多维数组

low和hight代表随机数的最大值和最小值,size表示形状

n = np.random.randint(2,9,size= (4,4),dtype = np.int8)
print(n)

#[[2 3 7 4]
 [5 2 5 8]
 [8 4 2 5]
 [2 2 7 6]]

9.random.randn(d0,d1,d2...)

创建一个服从标准正态分布的多维数组

正态分布是一个均值,其他值则在均值两侧呈现正态分布

n = np.random.randn(2,2)
print(n)

[[ 0.41904164 -1.77092805]
 [ 0.71053412 -0.37183897]]

10.random.normal(loc=0.0,scale=1.0,size = None)

创建一个正态分布,

loc为均值,即正态分布中心

scale为标准差,标准差越大,正态分布越缓,标准差越大,正态分布越陡

n = np.random.normal(0,2,(2,2))
print(n)


#[[-0.2796318  -0.87402175]
 [ 2.16434439 -0.43034606]]

11.random.random(size= None)

创建一个元素为0~1(左开右闭)的随机数集合

n = np.random.random((2,2))
print(n)

[[0.39221156 0.79644022]
 [0.18058806 0.76382577]]

12.random.rand(d0,d2,d3...)

和上面一样,一个d代表一个维度,d0表示第一维度为多少

n = np.random.rand(2,2)
print(n)

#[[0.54617447 0.48065742]
 [0.58453461 0.46653232]]

五.ndarry操作

1.索引

和正常数组一样,使用  数组名【索引】可以拿到该索引下面的值,也可以修改该索引下面的值

n = [ 1  2  3  4]
    [ 5  6  7  8]
    [ 9 10 11 12]
    [13 14 15 16]

n[1][2] = n[1,2]  =1   #两种写法


n  = [ 1  2  3  4]
    [ 5  6  1  8]
    [ 9 10 11 12]
    [13 14 15 16]

2.切片

类似于列表的切片  【start:end:step】

取一行:  n[0]
连续取n行:  n[a:n-a]
只取1,2,7行:  n[1,2,7]

取一列: n[:,0]
连续取n列:  n[:,a:n-a]
只取1,2,7列:  n[:,[1,2,7]]

3.翻转

将行翻转或者将列翻转

行翻转: n[::-1]
列翻转: n[:,::-1]

4.修改形状

这里说的形状是多维数组,2*3,5*2就是两种形状   reshape(数组,size)

注意:修改后的形状所包含的元素要和原形状的元素数量保持一致

n = np.reshape(n,(2,2))

5.级联操作(合并操作)

级联操作主要使用的是concatenate((n1,n2),axis)函数,n1,n2分别为两个矩阵,axis决定哪个维度合并,0为行,1为列。还有两个少见的合并hstack()水平合并,vstack()垂直合并。

6.拆分(切分,切割)

和列表的类似,split(),hsplit()水平,vsplit()垂直

n = [ 1  2  3  4]
    [ 5  6  7  8]
    [ 9 10 11 12]
    [13 14 15 16]

a = np.split(n,4)

print(a)

#[array([[1, 2, 3, 4]]), 
array([[5, 6, 7, 8]]), 
array([[ 9, 10, 11, 12]]), 
array([[13, 14, 15, 16]])]

7.复制(拷贝,副本)

copy(),学过开发,没啥好说的

8.聚合函数

max      最大值
argmax   最大值下标
min      最小值
argmin   最小值下标
average  平均值
mean     平均值
median   中位数
percentile 百分位数
std      标准差
var      方差
argwhere 寻找某个数的所有下标
power    次方


#一些数学函数,到时候查找方便
abs      绝对值
sqrt     平方根
square   平方
exp      指数
log      对数
sin      正弦
cos      余弦
tan      正切
round    四舍五入
floor    向下取整
ceil     向上取整
cumsum   求和累加

六.矩阵操作

1.基本矩阵操作   

加减乘除

n+10   n-10   n*10   n/10

2.矩阵积

注意:第一个矩阵的列数必须是第二个矩阵的行数

(2*3)*(3*5)=(2*5)

np.dot()

3.矩阵逆

了解内容

线性代数:  np.linalg
矩阵逆:    np.linalg.inv(n)
行列式:    np.linalg.det(n)
矩阵的秩:  np.linalg.matrix_rank(n)

4.广播机制

了解内容

  • 规则一:为缺失的维度补齐维度
  • 规则二:为缺失的元素用已有值取填充
    m = [ 1,1,1
          1,1,1]
    n = [0,1,2]
    
    m+n = [1,1,1   +   [0,1,2    = [1,2,3,
            1,1,1]      0,1,2]      1,2,3]

5.排序

np.sort()      不改变原数组
ndarry.sort()  改变原数组

6.文件操作

存:
save   保存数组到npy文件中
savez  将多个array保存到要给npz文件中


取:
load    读取npy文件
load("文件名.npz")['数组名']    读取npz文件


csv和txt的读写操作

csv:  np.savetxt("arr.csv",n,delimiter=',')
txt:  np.savetxt("arr.txt",n)


读取: np.loadtxt('文件名')

结语

        ok了啊,现在是北京时间23:35,写完睡觉,拜拜了,老铁们,奥对,今天是数据分析的小白,梦想是做月入过万的男人,明天我倒是看看有没有时间写一下seleium的帖子,mai起!

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

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

相关文章

Java面试宝典-java基础07

Java面试宝典-java基础07 61、什么是 java 序列化?什么情况下需要序列化?62、序列化使用场景有哪些?63、使用序列化和反序列化的注意事项64、为什么要使用克隆?如何实现对象克隆?深拷贝和浅拷贝区别是什么?…

计算机网络概述(分组延时、丢失和吞吐量)

目录 分组丢失和延时是怎样发生的? 四种分组延时 节点延时 排队延迟 分组丢失 吞吐量 吞吐量:互联网场景 分组丢失和延时是怎样发生的? 在路由器缓冲区的分组队列 分组到达链路的速率超过了链路输出的能力分组等待排队到队头、被传输…

Ethernet 测试系列(1)-- 物理层测试::IOP Test::Link-up time

车载以太网物理层IOP测试,即互操作性测试(Interop- erability Tests),用于验证车载以太网PHY(通常也称为收发器)的可靠性和检查PHY能否在给定的有限时间内建立稳定的链路;还用于车载以太网PHY的诊断&#x…

ARCGIS 纸质小班XY坐标转电子要素面(2)

本章用于说明未知坐标系情况下如何正确将XY转要素面 背景说明 现有资料:清除大概位置,纸质小班图,图上有横纵坐标,并已知小班XY拐点坐标,但未知坐标系。需要上图 具体操作 大部分操作同这边文章ARCGIS 纸质小班XY…

Vue.js 模板语法详解:插值表达式与指令使用指南

Vue.js 模板语法详解:插值表达式与指令使用指南 引言 简要介绍主题: Vue.js 是一个现代化的 JavaScript 框架,用于构建用户界面。Vue 的模板语法提供了直观且功能强大的工具,用于将数据与 DOM 绑定。本文将深入探讨 Vue.js 的两个…

AI游戏革命!谷歌推出GameNGen,实时生成游戏画面,每秒20帧实时模拟

未来, AI会取代传统游戏引擎吗? 谷歌的研究人员发表论文称,他们创建了一个名为GameNGen的AI神经网络,直接用AI生成了整个《Doom》游戏! 最令人惊讶的是,他们并没有使用传统的游戏引擎,而是在单…

基于单片机的浴室防雾镜系统设计

1系统方案设计 浴室防雾镜是一种特殊的镜子,在浴室中使用时不会起雾,通过对其需要展开分析,本设计基于51单片机设计的浴室防雾镜的系统架构如图2.1所示,采用了DS18B20温度传感器和人体红外感应红外传感器进行智能控制&#xff0c…

通过住宅代理捕获网站快照:技术解析与未来展望

引言 什么是网站快照?为什么需要网站快照? 网站快照的工作原理是什么? 如何捕获网站快照? 网站快照未来的发展趋势 总结 引言 在当今快速发展的数字时代,网站快照作为一种关键的网页记录技术,扮演着越…

Springboot3整合ELK实现日志可视化

一、环境准备 Elasticsearch、Logstash、Kibana,组合起来可以搭建线上日志系统 ELK中各个服务的作用 Elasticsearch:用于存储收集到的日志信息; Logstash:用于收集日志,SpringBoot应用整合了Logstash以后会把日志发送给Logstash,Logstash再把日志转发…

【Android】UI拓展之滑动菜单、悬浮按钮、CoordinatorLayout布局等

文章目录 一、滑动菜单1. 添加依赖2. 侧滑菜单内容2.1 headerLayout样式2.2 menu样式 3. 主界面添加4. 关联actionbar与滑动菜单 二、悬浮按钮FloatingActionButton 三、可交互提示Snackbar 四、能协调子视图的布局CoordinatorLayout 五、卡片式布局CardView 一、滑动菜单 Draw…

微信小程序服务器费用一年多少?微信小程序开发

在互联网时代,微信小程序已成为众多企业和个人拓展业务、提升服务品质的有力工具。然而对于许多准备涉足小程序领域的朋友来说【开发一个小程序大概需要多少钱】以及【微信小程序服务器费用一年需要多少】是首要关注的问题,今天飞飞将和你们分享小程序服…

【LoRa】SetLoRaSymbNumTimeout寄存器

目录 1 前言2 实验验证疑问2.1 SetRx的timeout模式和SetLoRaSymbNumTimeout2.1.1 实验12.1.2 实验22.1.3 结论 2.2 SetRx的single与continuous模式和SetLoRaSymbNumTimeout2.2.1 实验12.2.2 实验22.2.3 实验3 3 小结 1 前言 本章节介绍LoRa芯片的寄存器SetLoRaSymbNumTimeout&…

服务器部署前后端分离项目vue+springboot

步骤 1-安装java,mysql,nginx环境 服务器先安装宝塔 yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_lts.sh && bash install.sh ed8484bec安装后输入bt 14查看内网链接打开宝塔页面 java&…

uniapp icons图标不显示的问题解决

如图所示 在uniapp开发中 突然发现icons组件不显示图标了 ,而且没什么报错 这是为什么 其实这最大的原因就是你上面的代码在取值上没有做好null的判断 导致参数取值报错 因此影响了页面正常的渲染 导致下面的图标都不显示

vsCode多文件标签栏换行显示

1.文件——首选项——点‘设置’ 2.输入 wrap tabs 并勾选Workbench › Editor: Wrap Tabs

安装MySQL,navicat以及Django配置遇到的一些问题

MySQL安装问题 安装MySQL按照了此文章: MySQL数据库下载及安装教程(最最新版)_mysql下载安装-CSDN博客https://blog.csdn.net/weixin_39289696/article/details/128850498首先是遇到了starting the server红色叉号显示 按照上面文章的介绍…

《机器学习》【项目】 爬虫爬取数据、数据分词、贝叶斯算法、判断分类 <完整实战详解> (全篇完结)

目录 一、回顾爬虫 1、什么是爬虫 2、实操爬虫 1)寻找标签位置 2)爬取苏某某购产品好评数据 运行代码: 3)爬取差评内容 二、数据分词 1、将获取到的好评和差评数据进行初步分词 1)初步分词 2)内…

华为云征文|1分钟熟悉Flexus X实例基础操作

前言 随着云计算技术的普及,越来越多的企业和个人开始将业务迁移到云端。华为云作为国内领先的云服务提供商,推出了高性能、高可用性的Flexus云服务器X,以满足不同用户的需求。本文将详细介绍如何购买Flexus云服务器X以及初次使用时的基本操…

物联网平台组件2: 平台校验规则

加载不通的规则引擎配置文件,使用DynamicExpresso校验采集数据,得出是否告警 rules.json {"Rules": [{"Description": "温度超过阈值警报","Condition": "temperature > 30","Action":…

2024 Xiangtan University Summer Camp-Div.2 个人题解 (待补完)

前言: 教练突然发在群里的一个比赛,想到自己好像也没什么事干,就参加了个div2(太菜了),我看着好像没啥人发这玩意的题解,cf上比赛结束了也看不了别人代码,就将自己的写出题的代码分享…