python numpy 模块简单介绍
用python自带的list去处理数组效率很低, numpy就诞生了, 它提供了ndarry对象,N-dimensional object, 是存储单一数据类型的多维数组,即所有的元素都是同一种类型。索引是一个正整数元组。
秩,rank==轴, axes ==维度, dimensions ==ndim==len(shap)
一, 简单介绍:
>>> from numpy import *
>>> a = arange(10).reshape(2,5)
>>> a
array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]])
arange 和自带的range形式一样,只不过返回的是一个数组对象
方法有:
dtype, 描述数组元素类型的对象, 方法有name
itemssize, 数组中每个元素的字节大小。float64的itemsize为64/8=8
ndim查看数组的秩,也称为轴, 维度。
size, 查看数组一共多少个元素。等于shap元组中的元素成绩。
shape, 数组的维度,是一个指示数组在每个维度上大小的整数元组。一个n排m列矩阵, shape为(2,3),这个元组的长度就是秩,即维度或者ndim属性。
reshape, 重新定义数组形态。
>>> type(a)
<type 'numpy.ndarray'>
>>> a.shape
(2, 5)
>>> a.ndim
2
>>> a.dtype
dtype('int64')
>>> a.dtype.name
'int64'
>>> a.itemsize
8
>>> a.size
10
二, 从列表创建数组
>>> import numpy as np
>>> a = np.array([2,3,4])
>>> a
array([2, 3, 4])
>>> a.dtype
dtype('int64')
数组的类型由原数据的类型推倒出来。
>>> a = np.array([1.2, 3, 4, 9])
>>> a
array([ 1.2, 3. , 4. , 9. ])
>>> a.dtype
dtype('float64')
注意: np.array()接受的是一个列表,即np.array([1,2,3,4]), 而不是np.array(1,2,3,4)
序列包含序列将转化为2维数组,序列包含序列包含序列将转化为三维数组
>>> a = array([[1,2,3], [4,5,6]]) #列表中有两个元组,转化时自动转为2维数组。也可以是a = array([[1,2,3], [4,5,6]])
>>> a
array([[1, 2, 3],
[4, 5, 6]])
>>> a.dtype
dtype('int64')
>>> a.size
6
>>> a.shape
(2, 3)
>>> a.ndim
2
在创建的时候数组类型可以指定如 a = array([[1,2,3], [4,5,6]], dtype=int32)
三, 用numpy自带方法创建全是零的数组或全是一的数组。
为什么这样做? 因为数组的元素刚开始是未知的,但是数组的大小往往是已知的,提前建好框架,节省了运算。
zeros()创建元素全是零的数组
>>> np.zeros((3,4)) #创建一个全是零的2维数组, 注意不能zeros(3,4). 类型默认均为float64. 也可以在创建的时候指定
array([[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]])
>>> a = np.zeros((1,10))
>>> a
array([[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]])
>>> a.dtype
dtype('float64')
>>> a.size
10
>>> a.shape
(1, 10)
>>> a.ndim
2
>>> b = np.zeros((10))
>>>b
array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
>>> b.dtype
dtype('float64')
>>> b.size
10
>>> b.shape
(10,)
>>> b.ndim
1
创建全是1的数组
>>> a = np.ones((2,3,4), dtype=np.int64) #三维数组, 两个三行四列。
>>> a
array([[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]],
[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]])
>>> a.shape
(2, 3, 4)
>>> a.ndim
3
四, 创建序列
>>> a = np.arange(1,10,5) # 和range的方法差不多。起始,终止, 步进。
>>> a
array([1, 6])
>>> a.shape
(2,)
>>> a.size
2
>>> a.ndim
1
>>> a = np.arange(0, 10, 2.5) #步进是小数的话,返回类型为float64
>>> a
array([ 0. , 2.5, 5. , 7.5])
>>> a.dtype
dtype('float64')
>>> a
array([ 0. , 2.5, 5. , 7.5])
>>> a.reshape(1,4)
array([[ 0. , 2.5, 5. , 7.5]]) #转化为2维
>>> a.shape
(4,)
>>> a.reshape(1,4).shape
(1, 4)
五, 用linspace(起始, 终止, 数列个数,是否包括终止值)创建一个等差数列数组
默认是包括终止值的。
>>> from numpy import *
>>> linspace(1, 10, 10)
array([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.])
>>> linspace(1, 10, 10, endpoint=False) #默认endpoint=True
array([ 1. , 1.9, 2.8, 3.7, 4.6, 5.5, 6.4, 7.3, 8.2, 9.1])
可以看到返回的数组dtype是浮点型:
>>> linspace(1,2,10).dtype
dtype('float64')
这个函数对用matplotlib作图的时候比较好用, 比如确定横纵坐标之类的。
六, 数组打印
一维数组打印成行, 二维数组打印成矩阵。 三维数组打印成矩阵列表。
自己尝试:
from numpy import *
>>> a = arange(24)
>>>print a
>>> print a.reshape(2,12)
>>> print a.reshape(2,3,4)
如果数组太大的话,numpy会自动省略中间部分
by freemao
FAFU
python numpy 模块简单介绍的更多相关文章
- python shutil模块简单介绍
python shutil模块简单介绍 简介 shutil模块提供了大量的文件的高级操作.特别针对文件拷贝和删除,主要功能为目录和文件操作以及压缩操作. shutil 模块方法: copy(src, ...
- python paramiko 模块简单介绍
背景,公司的很多服务包括数据库访问都需要通过跳板机访问,为日常工作及使用带来了麻烦,特别数python直接操作数据更是麻烦了,所以一直想实现python 通过跳板机访问数据库的操作. 首先了解到了 p ...
- python之pandas简单介绍及使用(一)
python之pandas简单介绍及使用(一) 一. Pandas简介1.Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据 ...
- Python -- Scrapy 框架简单介绍(Scrapy 安装及项目创建)
Python -- Scrapy 框架简单介绍 最近在学习python 爬虫,先后了解学习urllib.urllib2.requests等,后来发现爬虫也有很多框架,而推荐学习最多就是Scrapy框架 ...
- Python+selenium之简单介绍unittest单元测试框架
Python+selenium之简单介绍unittest单元测试框架 一.unittest简单介绍 unittest支持测试自动化,共享测试用例中的初始化和关闭退出代码,在unittest中最小单元是 ...
- python+selenium之简单介绍继承
python+selenium之简单介绍继承 一.此例简单的介绍一下继承 1.面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制.继承完全可以理解成类之间的类型和子类型 ...
- 【Python】operator 模块简单介绍
简单介绍几个常用的函数,其他的请参考文档. operator.concat(a, b) **operator.__concat__(a, b)** 对于 a.b序列,返回 a + b(列表合并) -- ...
- python numpy模块
目录 numpy模块 一维数组 二维数组(用的最多的) 获取多维数组的行和列 多维数组的索引 高级功能 多维数组的元素的替换 通过函数方法创建多维数组 矩阵的运算 点乘和转置(了解) 点乘必须 m*n ...
- Python学习--Selenium模块简单介绍(1)
简介及运行流程 Selenium 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 11),Mozi ...
随机推荐
- ASP.NET-遇到的错误汇总
错误:“未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序.” 在win7 64未上,读取Excel中的数据时报的错误, 解决方法:在生成"配置管理器中" ...
- PULL解析
PULL解析类似于SAX解析,都采用事件驱动(利用getEventType()方法)方式进行解析,当PULL解析器开始解析之后,可以不断地调用PULL解析器的next()方法获取下一个解析事件(开始文 ...
- android应用程序如何调用支付宝接口(转)
最近在做一个关于购物商城的项目,项目里面付款这块我选的是调用支付宝的接口,因为用的人比较多. 在网上搜索了以下,有很多这方面的教程,但大部分教程过于陈旧,而且描述的过于简单.而且支付宝提供的接口一直在 ...
- PHP IMAP收QQ邮件,SMTP存入另外QQ邮箱
作用,将qq1收到邮件,用qq2的账号.以qq0的为发件人身份放到qq2的邮箱. 什么样做这样一个功能,一个朋友要求的,她不告诉我为什么,好吧 <?php define('USER','xxx@ ...
- 5个最顶级jQuery图表类库插件-Charting plugin
转载: http://www.cnblogs.com/chu888chu888/archive/2012/12/22/2828962.html 作者:Leonel Hilario翻译:Terry li ...
- 在shell脚本中使用函数
转载请标明:http://www.cnblogs.com/winifred-tang94/ 对于在脚本中重复使用的功能模块,可以封装成为函数. shell脚本中函数的定义可以使用如下两种方式: a. ...
- 谁说固态硬盘没容量?4TB诞生、明年8TB!
固态硬盘已经逐渐取代机械硬盘成为很多用户的首选,但唯一欠缺的就是容量,或者说单位容量的价格,但是如今,机械硬盘的容量提升举步维艰,固态硬盘却在突飞猛进. 近日,SanDisk就宣布了全球第一款容量高达 ...
- Struts2 中EL表达式取值顺序
pagecontext---->request---->Valuestack-root栈顶----->root栈底----->actioncontext map----> ...
- Java选择结构、循环结构
1:switch语句(掌握) (1)格式: switch(表达式) { case 值1: 语句体1; break; case 值2: 语句体2; break; ... default: 语句体n+1; ...
- 《同一个类中不同方法之间的调用相关问题(省略的类名或者this)》
//同一个类中不同方法之间的调用相关问题(省略的类名或者this) class A { public void B() { System.out.println("b方法运行"); ...