Python数据分析教程(一):Numpy
原文链接:https://blog.onefly.top/posts/13140.html
数据的纬度
一维数据:列表和集合类型

二维数据:列表类型

多维数据:列表类型

高维数据:字典类型或数据表示格式,如json、xml、yaml


维度:一组数据的组织形式

列表和数组:一组数据的有序结构

Numpy
Numpy介绍
NumPy是一个开源的Python科学计算基础库,包含:
一个强大的N维数组对象ndarray
广播功能函数
整合C/C++/Fortran代码的工具
线性代数、傅里叶变换、随机数生成等功能
NumPy是SciPy、Pandas等数据处理或科学计算库的基础
模块导入:
import numpy as np
N维数组对象:ndarray
数组对象可以去掉元素间运算所需的循环,使一维向量更像单个数据
设置专门的数组对象,经过优化,可以提升这类应用的运算速度————科学计算中,一个维度所有数据的类型往往相同
数组对象采用相同的数据类型,有助于节省运算和存储空间

ndarray实例
- ndarray是一个多维数组对象,由两部分构成:
- 实际的数据
- 描述这些数据的元数据(数据维度、数据类型等)
- ndarray数组一般要求所有元素类型相同(同质),数组下标从0开始

ndarray对象的属性
#属性&说明
.ndim #秩,即轴的数量或维度的数量
.shape #ndarray对象的尺度,对于矩阵,n行m列
.size #ndarray对象元素的个数,相当于.shape中n*m的值
.dtype #ndarray对象的元素类型
.itemsize #ndarray对象中每个元素的大小,以字节为单位

ndarray的元素类型


ndarray数组的创建方法
- 从Python中的列表、元组等类型创建ndarray数组
- 使用NumPy中函数创建ndarray数组,如:arange, ones, zeros等
- 从字节流(raw bytes)中创建ndarray数组
- 从文件中读取特定格式,创建ndarray数组
通过列表创建ndarray:

使用函数创建ndarray:
#函数&说明
np.arange(n) #类似range()函数,返回ndarray类型,元素从0到n-1
np.ones(shape) #根据shapes生成一个全l数组,shape是元组类型
np.zeros(shape) #根据shape生成一个全数组,shape是元组类型
np.full(shape,val) #根据shape:生成一个数组,每个元素值都是val
np.eye(n) #创建一个正方的n*n单位矩阵,对角线为1,其余为0
ndarray数组的变换:
对于创建后的ndarray数组,可以对其进行维度变换和元素类型变换
#方法&说明
.reshape(shape) #不改变数组元素,返回一个shape形状的数组,原数组不变
.resize(shape) #与.reshape()功能一致,但修改原数组
.swapaxes(ax1,ax2) #将数组n个维度中两个维度进行调换
.flatten() #对数组进行降维,返回折叠后的一维数组,原数组不变

数组的索引和切片
- 索引:获取数组中特定位置元素的过程
- 切片:获取数组元素子集的过程
一维数组的索引和切片

多维数组索引

多维数组切片

ndarray数组的运算
NumPy一元函数:
#函数&说明
np.abs(x)
np.fabs(x)#计算数组各元素的绝对值
np.sqrt(x)#计算数组各元素的平方根
np.square(x)#计算数组各元素的平方
np.log(x)
np.1og10(x)
np.1og2(x)#计算数组各元素的自然对数、10底对数和2底对数
np.ceil(x)
np.floor(x)#计算数组各元素的ceiling值或f1oor值
np.rint(x)#计算数组各元素的四舍五入值
np.modf(x)#将数组各元素的小数和整数部分以两个独立数组形式返回
np.cos(x)np.cosh(x)
np.sin(x)np.sinh(x)#计算数组各元素的普通型和双曲型三角函数
np.tan(x)np.tanh(x)
np.exp(x)#计算数组各元素的指数值
np.sign(x)#计算数组各元素的符号值,1(+),0,-1(-)
NumPy二元函数:
#函数&说明
+ - * / ** #两个数组各元素进行对应运算
np.maximum(x,y)
np.fmax()
np.minimum(x,y)
np.fmin() #元素级的最大值/最小值计算
np.mod(x,y) #元素级的模运算
np.copysign(x,y) #将数组y中各元素值的符号赋值给数组x对应元素
>< >= <= == != #算术比较,产生布尔型数组
Numpy数据存取:
csv格式:

np.savetxt(frame,array,fmt='%.18e',delimiter=None)
- frame:文件、字符串或产生器,可以是.gz或.bz2的压缩文件
- array:存入文件的数组
- fmt:写入文件的格式,例如:%d%.2f%.18e
- delimiter:分割字符串,默认是任何空格
其他:
np.loadtxt(frame,dtype=np.float,delimiter=None,
unpack=False)
- frame:文件、字符串或产生器,可以是.gz或.bz2的压缩文件
- dtype:数据类型,可选
- delimiter:分割字符串,默认是任何空格
- unpack:如果True,读入属性将分别写入不同变量
其他:
a.tofile(frame, sep='', format='%s')
np.fromfile(frame, dtype=float, count=‐1, sep='')
numpy随机数函数子库:
np.random.*
#函数&说明
rand(d0,d1,..,dn) #根据d0-dn创建随机数数组,浮点数,[0,1),均匀分布
randn(d0,d1,..,dn) #根据d0-dn创建随机数数组,标准正态分布
randint(low[,high,shape]) #根据shapet创建随机整数或整数数组,范围是[low,high)
seed(s) #随机数种子,s是给定的种子值
shuffle(a) #根据数组a的第1轴进行随排列,改变数组×
permutation(a) #根据数组a的第1轴产生一个新的乱序数组,不改变数组x
choice(a[,size,replace,p]) #从一维数组a中以概率p抽取元素,形成size形状新数组 replace表示是否可以重用元素,默认为False
uniform(low,high,size) #产生具有均匀分布的数组,low起始值,high结束值,size形状
normal(loc,scale,size) #产生具有正态分布的数组,loc均值,scale标准差,size形状
poisson(lam,size) #产生具有泊松分布的数组,lam随机事件发生率,size形状
numpy统计函数:
np.*
#函数&说明
sum(a,axis=None) #根据给定轴axis计算数组a相关元素之和,axis整数或元组
mean(a,axis=None) #根据给定轴axis计算数组a相关元素的期望,axis整数或元组
average(a,axis=None,weights=None) #根据给定轴axis计算数组a相关元素的加权平均值
std(a,axis=None) #根据给定轴axis计算数组a相关元素的标准差
var(a,axis=None) #根据给定轴axis计算数组a相关元素的方差
min(a)
max(a) #计算数组a中元素的最小值、最大值
argmin(a)
argmax(a) #计算数组a中元素最小值、最大值的降一维后下标
unravel_index(index,shape) #根据shape?将一维下标index转换成多维下标
ptp(a) #计算数组a中元素最大值与最小值的差
median(a) #计算数组a中元素的中位数(中值)
numpy替换函数:
- np.where(condition, x, y) ——满足条件(condition),输出x,不满足输出y。
- 只有条件 (condition),没有x和y,则输出满足条件 (即非0) 元素的坐标 (等价于numpy.nonzero)

numpy数据存取
CSV文件
np.loadtxt()
np.savetxt()
多维数据存取
a.tofile()
np.fromfile()
np.save()
np.savez()
np.load()
随机函数
np.random.rand()
np.random.randn()
np.random.randint()
np.random.seed()
np.random.shuffle()
np.random.permutation()
np.random.choice()
原文链接:https://ranxi2001.github.io/posts/13140.html
Python数据分析教程(一):Numpy的更多相关文章
- python数据分析三剑客之: Numpy
数据分析三剑客之: Numpy 一丶Numpy的使用 numpy 是Python语言的一个扩展程序库,支持大维度的数组和矩阵运算.也支持针对数组运算提供大量的数学函数库 创建ndarray # 1 ...
- python 数据分析工具之 numpy pandas matplotlib
作为一个网络技术人员,机器学习是一种很有必要学习的技术,在这个数据爆炸的时代更是如此. python做数据分析,最常用以下几个库 numpy pandas matplotlib 一.Numpy库 为了 ...
- Python数据分析教程(二):Pandas
Pandas导入 Pandas是Python第三方库,提供高性能易用数据类型和分析工具 Pandas基于NumPy实现,常与NumPy和Matplotlib一同使用 两个数据类型:Series, Da ...
- Python数据分析工具库-Numpy 数组支持库(一)
1 Numpy数组 在Python中有类似数组功能的数据结构,比如list,但在数据量大时,list的运行速度便不尽如意,Numpy(Numerical Python)提供了真正的数组功能,以及对数据 ...
- $python数据分析基础——初识numpy库
numpy库是python的一个著名的科学计算库,本文是一个quickstart. 引入:计算BMI BMI = 体重(kg)/身高(m)^2 假如有如下几组体重和身高数据,让求每组数据的BMI值: ...
- python数据分析教程大全
第一篇:Anaconda安装和使用 第二篇:Jupyter norebook使用 第三篇:pandas教程 第四篇:numpy教程 第五篇:Matplotlib教程 第六篇:实战项目 期待吗?(微笑脸 ...
- Python数据分析工具库-Numpy 数组支持库(二)
1 shape变化及转置 >>> a = np.floor(10*np.random.random((3,4))) >>> a array([[ 2., 8., 0 ...
- 【Python 数据分析】module 'numpy' has no attribute 'array'
安装好Numpy模块后,开始做了几个小测试都可以运行,但是当我创建numpy.py这个文件后 numpy.py import numpy y = numpy.array([[11,4,2],[2,6, ...
- python数据分析2之numpy
源代码 # -*- coding: utf-8 -*- """ Spyder Editor This is a temporary script file. " ...
随机推荐
- 聊聊 Netty 那些事儿之 Reactor 在 Netty 中的实现(创建篇)
本系列Netty源码解析文章基于 4.1.56.Final版本 在上篇文章<聊聊Netty那些事儿之从内核角度看IO模型>中我们花了大量的篇幅来从内核角度详细讲述了五种IO模型的演进过程以 ...
- # vue3 ref 和 reactive 函数
vue3 ref 和 reactive 函数 前言 上一篇博文介绍 setup 函数的时候,最后出现一个问题,就是在 setup 函数中,编写一个事件,直接去修改定义的变量,发现页面上没有更新成功,并 ...
- Django数据库性能优化之 - 使用Python集合操作
前言 最近有个新需求: 人员基础信息(记作人员A),10w 某种类型的人员信息(记作人员B),1000 要求在后台上(Django Admin)分别展示:已录入A的人员B列表.未录入的人员B列表 团队 ...
- Python语法糖,提升编程幸福感!!!
转载请注明出处️ 作者:测试蔡坨坨 原文链接:caituotuo.top/a52bc938.html 大家好,我是测试蔡坨坨. 今天,我们来盘点一下Python中的那些语法糖. 什么是语法糖?语法糖不 ...
- Identity Server 4客户端认证控制访问API
项目源码: 链接:https://pan.baidu.com/s/1H3Y0ct8xgfVkgq4XsniqFA 提取码:nzl3 一.说明 我们将定义一个api和要访问它的客户端,客户端将在iden ...
- 常用类-Instant、DateTimeFormatter类的使用
一.Instant 我们所处的时间点是在东八区,Java中Instant所计算出来的时间是按本初子午线的时间来算的,与我们的时间相差8个小时,也就是说当我的北京时间是上午九点时,本初子午线的时间是凌晨 ...
- javaScript去重的11种方法
前言 去重是开发和面试中经常遇到的问题,下面是总结的 11 种去重方法 方法 示例数组 var arr = [1, 2, 4, 5, 5, 2, 1, 1, 4, 6] set + 解构赋值 这种方法 ...
- mysql主库用户密码登陆失败从库正常
问题描述:有业务反馈称数据库上的用户有的可以登陆,有的不能登录,是不是集群有问题.怎么会有这么奇怪的问题,是不是最大连接数达到限制了. 环境:keepalived+mysql 5.7.37主从 登录数 ...
- idea 内置tomcat jersey 跨服务器 上传文件报400错误
报错内容 com.sun.jersey.api.client.UniformInterfaceException: PUT http://.jpg returned a response status ...
- 洛谷 P2073 送花 treap 无指针
看了那么多题解都没做对,结果今早上按自己的思路和模板做了做,然后过了. 平衡树裸题 直接上代码: #include<bits/stdc++.h> #define rint register ...