Python——NumPy库入门
1、数据的纬度
维度:一组数据的组织形式
1.1 一维数据
一维数据由对等关系的有序或无序数据构成,采用线性方式组织 ,对应列表、数组和集合等概念
列表:数据类型可以不同 ,如 3.1413, 'pi', 3.1404, [3.1401, 3.1349], '3.1376'
数组:数据类型相同 。如:3.1413, 3.1398, 3.1404, 3.1401, 3.1349, 3.1376
1.2 二维数据
二维数据由多个一维数据构成,是一维数据的组合形式。表格是典型的二维数据其中,表头是二维数据的一部分 。

1.3 多维数据
多维数据由一维或二维数据在新维度上扩展形成

1.4 高维数据
高维数据仅利用最基本的二元关系展示数据间的复杂结构

2、NumPy的数组对象:ndarray
NumPy是一个开源的Python科学计算基础库,包含:
• 一个强大的N维数组对象 ndarray
• 广播功能函数
• 整合C/C++/Fortran代码的工具
• 线性代数、傅里叶变换、随机数生成等功能
NumPy是SciPy、 Pandas等数据处理或科学计算库的基础
2.1 NumPy的引用 
2.2 N维数组对象:ndarray
例:计算 A2+B3,其中,A和B是一维数组 。
def pysum():
a=[0,1,2,3,4]
b=[9,8,7,6,5]
c=[]
for i in range(len(a)):
c.append(a[i]**2+b[i]**3) return c
print(pysum())
利用python 已有的列表类型和循环的方法可以求出结果,但是程序繁琐。
>>> print (npsum())
None
>>> import numpy as np
>>> def npsum():
a=np.array([0,1,2,3,4])
b=np.array([9,8,7,6,5])
c=a**2+b**3
return c
>>> print(npsum())
[729 513 347 225 141]
利用numpy方式编程,可以看出,并没有使用循环,更简洁。
2.2.1
• 数组对象可以去掉元素间运算所需的循环,使一维向量更像单个数据
• 设置专门的数组对象,经过优化,可以提升这类应用的运算速度
观察:科学计算中,一个维度所有数据的类型往往相同
• 数组对象采用相同的数据类型,有助于节省运算和存储空间
ndarray是一个多维数组对象,由两部分构成:
• 实际的数据
• 描述这些数据的元数据(数据维度、数据类型等)ndarray数组一般要求所有元素类型相同(同质),数组下标从0开始
2.2.2

np.array()输出成[]形式,元素由空格分割 。


8位(0或者1)组成一个字节。
2.3
2.3.1ndarray数组的元素类型



对比:Python语法仅支持整数、浮点数和复数3种类型
• 科学计算涉及数据较多,对存储和性能都有较高要求
• 对元素类型精细定义,有助于NumPy合理使用存储空间并优化性能
• 对元素类型精细定义,有助于程序员对程序规模有合理评估
2.3.2
非同质的ndarray

非同质ndarray对象无法有效发挥NumPy优势,尽量避免使用
2.4 ndarray数组的创建
创建方法
• 从Python中的列表、元组等类型创建ndarray数组
• 使用NumPy中函数创建ndarray数组,如:arange, ones, zeros等
• 从字节流(raw bytes)中创建ndarray数组
• 从文件中读取特定格式,创建ndarray数组
2.4.1 从Python中的列表、元组等类型创建ndarray数组
x = np.array(list/tuple)
x = np.array(list/tuple, dtype=np.float32)

2.4.2 使用NumPy中函数创建ndarray数组,如:arange, ones, zeros等






2.5 ndarray数组的变换
2.5.1 纬度的变换



a并没有发生变化

a发生改变

输出一维,但是a并没有发生变化
2.5.2 ndarray数组的类型变换
new_a = a.astype(new_type)

2.5.3 ndarray数组向列表的转换
ls = a.tolist()

2.6 ndarray数组的操作
数组的索引和切片
索引:找到特定位置的数据
切片:找到特定位置的一组数据
一维数组的索引和切片:与Python的列表类似

多维数组的索引:

多维数组的切片:

2.7 ndarray数组的运算
2.7.1 数组与标量之间的运算


2.7.2 NumPy一元函数



2.7.3NumPy二元函数


Python——NumPy库入门的更多相关文章
- Python数据分析与展示(1)-数据分析之表示(1)-NumPy库入门
Numpy库入门 从一个数据到一组数据 维度:一组数据的组织形式 一维数据:由对等关系的有序或无序数据构成,采用线性方式组织. 可用类型:对应列表.数组和集合 不同点: 列表:数据类型可以不同 数组: ...
- 数据分析与展示——NumPy库入门
这是我学习北京理工大学嵩天老师的<Python数据分析与展示>课程的笔记.嵩老师的课程重点突出.层次分明,在这里特别感谢嵩老师的精彩讲解. NumPy库入门 数据的维度 维度是一组数据的组 ...
- python numpy库np.percentile用法说明
在python中计算一个多维数组的任意百分比分位数,此处的百分位是从小到大排列,只需用np.percentile即可…… a = range(1,101) #求取a数列第90%分位的数值 np.per ...
- 数据分析之Numpy库入门
1.列表与数组 在python的基础语言部分,我们并没有介绍数组类型,但是像C.Java等语言都是有数组类型的,那python中的列表和数组有何区别呢? 一维数据:都表示一组数据的有序结构 区别: 列 ...
- 机器学习 Numpy库入门
2017-06-28 13:56:25 Numpy 提供了一个强大的N维数组对象ndarray,提供了线性代数,傅里叶变换和随机数生成等的基本功能,可以说Numpy是Scipy,Pandas等科学计算 ...
- Python——Pandas库入门
一.Pandas库介绍 Pandas是Python第三方库,提供高性能易用数据类型和分析工具 import pandas as pd Pandas基于NumPy实现,常与NumPy和Matplotli ...
- Python Requests库入门——应用实例-百度、360搜索关键词提交
百度的关键词接口: http://www.baidu.com/s?wd=keyword 360的关键词接口: http://www.so.com/s?q=keyword keyword就是需要查找的关 ...
- Python——Matplotlib库入门
1.Matplotlib库简介 优秀的可视化第三方库 Matplotlib库由各种可视化类构成,内部结构复杂,受Matlab启发 matplotlib.pyplot是绘制各类可视化图形的命令子库,相当 ...
- python requests库入门[转]
首先,确认一下: Requests 已安装 Requests是 最新的 让我们从一些简单的示例开始吧. 发送请求 使用Requests发送网络请求非常简单. 一开始要导入Requests模块: > ...
随机推荐
- 使用nestjs集成grpc具体操作
两个程序中, 提供grpc服务的称为服务端, 调用grpc服务的为客户端, 以下是grpc服务端和客户端的代码编写 1. 创建两个nestjs项目demo1(端口: 3000)和demo2(端 ...
- 【5min+】AspNet Core中的全局异常处理
系列介绍 [五分钟的dotnet]是一个利用您的碎片化时间来学习和丰富.net知识的博文系列.它所包含了.net体系中可能会涉及到的方方面面,比如C#的小细节,AspnetCore,微服务中的.net ...
- javascript闭包的用处
谈及javascript的闭包,可能想到的就是内存泄露,慎用闭包,但是实际上闭包还有更多好的作用: 1,可以将for循环的变量封闭在闭包环境中,下面这种情况,无论点击1-5div,最终打印的都是5,因 ...
- 使用JS检测自定义协议是否存在
[该博客是拼接他人的,原因我们这边PC的开发人员问我,有没有关于js某个对象直接能检测手机或者电脑的自定义协议的,我上网搜了下,貌似移动端的解决比较多] 最终解决方案:还是需要github上面大神写的 ...
- 编译 openwrt 及初始配置
主机为 ubuntu 14 x64 硬件: 优酷土豆宝 cpuMT7620A,内存128M,flash 32M有2个源,用哪个也可以git clone https://github.com/openw ...
- drf分页功能
什么是restful规范 是一套规则,用于程序之间进行数据交换的约定. 他规定了一些协议,对我们感受最直接的的是,以前写增删改查需要写4个接口,restful规范的就是1 个接口,根据method的不 ...
- Vue2.0 【第二季】第3节 Vue.set全局操作
目录 Vue2.0 [第二季]第3节 Vue.set全局操作 第3节:Vue.set全局操作 一.引用构造器外部数据 二.在外部改变数据的三种方法: 三.为什么要有Vue.set的存在? Vue2.0 ...
- list的常用方法
注:lst为定义的列表变量,如:lst = [1, 2, 3, 4, 5] 增: 1. lst.append() 末尾追加 lst = [1, 2, 3, 4, 5, 6] lst.append( ...
- JAVA-阿里云短信服务
1.引入相关依赖 <!--lombok--> <dependency> <groupId>org.projectlombok</groupId> < ...
- Cisco二层交换机命令
1.二层交换机基本配置 Switch >Switch >enable # 进入特权模式 Switch#configure terminal # 进入全局配置模式 Switch(co ...