Python科学计算基础包-Numpy
一、Numpy概念
Numpy(Numerical Python的简称)是Python科学计算的基础包。它提供了以下功能:
- 快速高效的多维数组对象ndarray。
- 用于对数组执行元素级计算以及直接对数组执行数学运算的函数。
- 用于读写硬盘上基于数组的数据集的工具。
- 线性代数运算、傅里叶变换,以及随机数生成。
- 用于将C、C++、Fortran代码集成到Python的工具。
除了为Python提供快速的数组处理能力,Numpy在数据分析方面还有另外一个主要作用,即作为在算法之间传递数据的容器。对于数值型数据,Numpy数组在存储和处理数据时要比内置的Python数据结构高效的多。此外,由低级语言(比如C和Fortran)编写的库可以直接操作Numpy数组中的数据,无需进行任何数据复制工作。
二、Numpy的突出优势
与Python的基本数据类型相比,其具有以下突出优势:
- 提供功能更强大的高维数组(N-dimensional)对象
- 强大的广播功能(broadcasting),便于矢量化数组操作(直接对数组进行数据处理,而不需要编写循环)
- 集成了 C/C++ 以及 Fortran代码编写的工具
- 包含常用的线性代数、傅里叶变换,以及随机数生成
- 提供易用的C API,可以将数据传递到使用低级语言编写的外部库,也可以使外部库返回NumPy数组数据到Python
- 通用的数组算法,例如:sorting,unique和set等操作
NumPy提供了两种基本的对象:ndarray(N-dimensional array object)和ufunc(universal function object)。ndarray用来存储单一数据类型的多维数组,ufunc是对数组进行处理的函数。
三、ndarray对象
Numpy的核心是ndarray对象,它封装了同质数据类型的n维数组,与python序列有以下区别:
ndarray在创建时有固定大小:不同于python中的列表,更改ndarray的大小将创建一个新的数组并删除原始数据 ndarray中的元素有相同的数据类型 ndarray便于对大量数据进行高级数学操作:通常会比python内置序列更高效也更简单 越来越多的基于python的科学和数学软件使用ndarray数组:只知道python的内置序列类型是不够的,还需要知道如何使用ndaray数组
ndarray数据类型
Numpy支持比Python更多种类的数值类型,参见:数据类型
numpy数据类型 | python类型 | 描述 |
---|---|---|
bool_ | bool | 布尔(True或False),存储为一个字节 |
int_ | int | 默认整数类型(与C long相同;通常为int64或int32) |
intc | 与C int(通常为int32或int64)相同 | |
intp | 用于索引的整数(与C ssize_t相同;通常为int32或int64) | |
int8 | 字节(-128到127) | |
int16 | 整数(-32768到32767) | |
int32 | 整数(-2147483648至2147483647) | |
int64 | 整数(-9223372036854775808至9223372036854775807) | |
uint8 | 无符号整数(0到255) | |
uint16 | 无符号整数(0到65535) | |
uint32 | 无符号整数(0至4294967295) | |
uint64 | 无符号整数(0至18446744073709551615) | |
float_ | float | float64的简写。 |
float16 | 半精度浮点:符号位,5位指数,10位尾数 | |
float32 | 单精度浮点:符号位,8位指数,23位尾数 | |
float64 | 双精度浮点:符号位,11位指数,52位尾数 | |
complex_ | complex | complex128的简写。 |
complex64 | 复数,由两个32位浮点(实数和虚数分量) | |
complex128 | 复数,由两个64位浮点(实数和虚数分量) |
1
2
3
4
5
6
7
8
9
10
11
12
|
# 作为类型名称设置数组中元素的类型,为了向后兼容,也可以使用 float 或字符串 'float' x = np.array([ 1 , 2 , 3 ],dtype=np. float ) print x # 查看数据类型 print x.dtype # 作为单值类型转化函数 print np.int32( 1.3 ) # 转换数组的类型,会产生新的副本 print x.astype(np. int ) |
结果:
1
2
3
4
|
[ 1 . 2 . 3 .] float64 1 [ 1 2 3 ] |
感谢阅读上海尚学堂文章,获取更多内容或支持请点击上海python培训
Python科学计算基础包-Numpy的更多相关文章
- 科学计算基础包——Numpy
一.NumPy简介 NumPy是高性能科学计算和数据分析的基础包.它是pandas等其他各种工具的基础. 1.NumPy的主要功能 (1)ndarray:一个多维数组结构,高效且节省空间. (2)无需 ...
- windows下安装python科学计算环境,numpy scipy scikit ,matplotlib等
安装matplotlib: pip install matplotlib 背景: 目的:要用Python下的DBSCAN聚类算法. scikit-learn 是一个基于SciPy和Numpy的开源机器 ...
- python科学计算库的numpy基础知识,完美抽象多维数组(原创)
#导入科学计算库 #起别名避免重名 import numpy as np #小技巧:从外往内看==从左往右看 从内往外看==从右往左看 #打印版本号 print(np.version.version) ...
- python 科学计算基础库安装
1.numpyNumPy(Numeric Python)是用Python进行科学计算的基本软件包. NumPy是Python编程语言的扩展,增加了对大型多维数组和矩阵的支持,以及一个大型的高级数学函数 ...
- Python科学计算库灬numpy
Numpy NumPy是一个功能强大的Python库,主要用于对多维数组执行计算.Numpy许多底层函数实际上是用C编写的,因此它的矩阵向量计算速度是原生Python中无法比拟的. numpy属性 维 ...
- python科学计算基础知识
1.导入基本函数库 import numpy as np 2.获取矩阵元素字节数 a=np.array([1,2,3],dtype=np.float32) a.itemsizeoutput: 4 3. ...
- Python科学计算:用NumPy快速处理数据
创建数组 import numpy as np a=np.array([1,2,3]) b=np.array([[1,2,3],[4,5,6],[7,8,9]]) b[1,1]=10 print(a. ...
- Python科学计算学习一 NumPy 快速处理数据
1 创建数组 (1) array(boject, dtype=None, copy=True, order=None, subok=False, ndmin=0) a = array([1, 2, 3 ...
- Python科学计算库
Python科学计算库 一.numpy库和matplotlib库的学习 (1)numpy库介绍:科学计算包,支持N维数组运算.处理大型矩阵.成熟的广播函数库.矢量运算.线性代数.傅里叶变换.随机数生成 ...
随机推荐
- syntax error near unexpected token `do(写的shell脚本出现格式问题)--->1.问题2.展示信息3.解决方案
1问题:Linux和windows下的回车换行符不兼容的问题 [root@node-01 script]# sh start_zk.sh art_zk.sh: line 3: syntax error ...
- 如何设置PDF签名文档,PDF签名文档怎么编辑
在工作中我们都会遇到有文件需要签名的时候,如果是在身边就直接拿笔来签名了,那么如果没有在身边又是电子文件需要签名的时候应该怎么办呢,这个时候就应该设置一个电子的签名文档,其他的文件电子文件签名很简单, ...
- Long Long Ago 二分查找
L: Long Long Ago 时间限制: 1 s 内存限制: 128 MB 提交 我的状态 题目描述 今天SHIELD捕获到一段从敌方基地发出的信息里面包含一串被经过某种算法加密过的的序 ...
- 使用Nginx+Lua实现waf
使用Nginx+Lua实现waf 技术内容来自:https://github.com/loveshell/ngx_lua_waf 软件包需求: 1 .Nginx兼容性[最后测试到1.13.6] [ro ...
- 【lamba】java 8的新特性
看到lamba表达式用起来还不错,找了几篇文章学习下: 所以结合之前两个反编译的结果可以看到,lamdba表达式运行整体思路大致如下: 1. lamdba表达式被编译生成当前类的一个私有静态方法 2. ...
- Django----将列表按照一定的顺序展示
1.要求:按照文章的时间降序排列,并且只展示前5篇文章 2.需要用到:list的切片知识 ###改造view.py中的视图方法 #列表页 def get_article(request): artic ...
- 维护爬虫代理IP池--采集并验证
任务分析 我们爬的免费代理来自于https://www.kuaidaili.com这个网站.用`requests`将ip地址与端口采集过来,将`IP`与`PORT`组合成`requests`需要的代理 ...
- IO流2
一.IO流简介及分类 1.IO流简介 IO流: 简单理解数据从一个地方流向另外一个地方 2.IO流分类 按照数据流动的方向 分为 输入流和输出流 按照数据流动的单位分为 字节流和字符流 二.四大 ...
- Alpha冲刺——代码规范、冲刺任务与计划
代码规范 作业描述 课程 软件工程1916|W(福州大学) 团队名称 修!咻咻! 作业要求 项目Alpha冲刺(团队) 团队目标 切实可行的计算机协会维修预约平台 开发工具 Eclipse 团队信息 ...
- BigDecimal.valueOf
Those are two separate questions: "What should I use for BigDecimal?" and "What do I ...