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模块: > ...
随机推荐
- 这些Zepto中实用的方法集
前言 时间过得可真快,转眼间2017年已去大半有余,你就说吓不吓人,这一年你成长了多少,是否荒度了很多时光,亦或者天天向上,收获满满.今天主要写一些看Zepto基础模块时,比较实用的部分内部方法,在我 ...
- Vue双向绑定的实现原理系列(三):监听器Observer和订阅者Watcher
监听器Observer和订阅者Watcher 实现简单版Vue的过程,主要实现{{}}.v-model和事件指令的功能 主要分为三个部分 github源码 1.数据监听器Observer,能够对数据对 ...
- .NET微服务从0到1:服务注册与发现(Consul)
目录 Consul搭建 基于Docker搭建Consul 基于Windows搭建Consul ServiceA集成Consul做服务注册 Ocelot集成Consul做服务发现 更多参考 Consul ...
- webpack安装问题
在sf进行安装webpack时候,报错如下: 解决方案:npm install webpack-cli -g,如图上
- LoadRunner初入门(安装)
在经过了两天网上找软件-真机上装软件-完了发现真机不能用(不能用的原因就是IE不能打开 试了很多方法现在真机上的ie变成了ie8英文版),果断用上了虚拟机 虚拟机刚开始要装镜像 一开始下的是64位的发 ...
- Maven pom.xml 添加本地jar包依赖以及打包方法
Maven项目打包时,如果遇到需要添加本地jar包依赖的时候,可以选择两种方法: 1. 安装到本地仓库 第一种方法比较常规,适用于需要添加的jar包也是由maven项目导出,含有pom文件的时候.只需 ...
- 异步编程RxJava-介绍
前言前段时间写了一篇对协程的一些理解,里面提到了不管是协程还是callback,本质上其实提供的是一种异步无阻塞的编程模式:并且介绍了java中对异步无阻赛这种编程模式的支持,主要提到了Future和 ...
- 【作业1.0】OO第一单元作业总结
OO第一单元作业已全部完成,为了使这一单元的作业能够收获更多一点,我回忆起我曾经在计算机组成课设中,经常我们会写一些实验报告,经常以此对实验内容反思总结.在我们开始下一单元的作业之前,我在此对OO第一 ...
- 文件合并cat and paste
cat 纵向合并 cat file1 file 2 paset横向合并 wc用法 sort用法
- Minio 集群扩容存储空间,配合nginx 负载反向代理后端minio 集群服务器,提升高可用性
环境:Centos 7 软件:minio,Etcd 需求:通过联盟两个集群实例,实现水平扩容存储空间问题: 服务器使用阿里云,一共4台服务器(官方说明最好4台服务器做分布式,测试节省服务器所以我们使 ...