用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

free_mao@qq.com

python numpy 模块简单介绍的更多相关文章

  1. python shutil模块简单介绍

    python shutil模块简单介绍 简介 shutil模块提供了大量的文件的高级操作.特别针对文件拷贝和删除,主要功能为目录和文件操作以及压缩操作. shutil 模块方法: copy(src, ...

  2. python paramiko 模块简单介绍

    背景,公司的很多服务包括数据库访问都需要通过跳板机访问,为日常工作及使用带来了麻烦,特别数python直接操作数据更是麻烦了,所以一直想实现python 通过跳板机访问数据库的操作. 首先了解到了 p ...

  3. python之pandas简单介绍及使用(一)

    python之pandas简单介绍及使用(一) 一. Pandas简介1.Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据 ...

  4. Python -- Scrapy 框架简单介绍(Scrapy 安装及项目创建)

    Python -- Scrapy 框架简单介绍 最近在学习python 爬虫,先后了解学习urllib.urllib2.requests等,后来发现爬虫也有很多框架,而推荐学习最多就是Scrapy框架 ...

  5. Python+selenium之简单介绍unittest单元测试框架

    Python+selenium之简单介绍unittest单元测试框架 一.unittest简单介绍 unittest支持测试自动化,共享测试用例中的初始化和关闭退出代码,在unittest中最小单元是 ...

  6. python+selenium之简单介绍继承

    python+selenium之简单介绍继承 一.此例简单的介绍一下继承 1.面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制.继承完全可以理解成类之间的类型和子类型 ...

  7. 【Python】operator 模块简单介绍

    简单介绍几个常用的函数,其他的请参考文档. operator.concat(a, b) **operator.__concat__(a, b)** 对于 a.b序列,返回 a + b(列表合并) -- ...

  8. python numpy模块

    目录 numpy模块 一维数组 二维数组(用的最多的) 获取多维数组的行和列 多维数组的索引 高级功能 多维数组的元素的替换 通过函数方法创建多维数组 矩阵的运算 点乘和转置(了解) 点乘必须 m*n ...

  9. Python学习--Selenium模块简单介绍(1)

    简介及运行流程 Selenium 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 11),Mozi ...

随机推荐

  1. 启动 nginx 失败 "fastcgi_pass" directive is duplicate

    [emerg] 4953#0: "fastcgi_pass" directive is duplicate in /etc/nginx/sites-enabled/default: ...

  2. HDU 4087 三维上的平移缩放旋转矩阵变化

    题目大意: 就是根据它给的程序的要求,不断平移,缩放,旋转三维的点,最后计算出点的位置 这里主要是要列出三种转换方式的齐次矩阵描述 平移translate tx ty tz1 0 0 00 1 0 0 ...

  3. 在Tomcat下配置Solr 4.x 版本

    solr是一款非常优秀的全文检索服务器,最新版本在配置和前台页面上都做了较大的改动, 所以对用惯了老版本的朋友们来说,再重新配置新版本的solr,无疑又是一件痛苦的事情. 配置环境:windows   ...

  4. Visual Studio 中的头文件、源文件和资源文件都是什么?有什么区别??

    头文件:后缀为.h,主要是定义和声明之类的,比如类的定义,常量定义源文件:后缀.cpp,主要是实现之类的,比如类方法的实现资源文件主要是你用到的一些程序代码以外的东西,比如图片之类,或者菜单.工具栏之 ...

  5. Android TextView多行垂直滚动

    在Android应用中,有时候需要TextView可以垂直滚动,今天我就介绍一下怎么实现的.在布局里: <TextView android:id="@+id/tvCWJ" a ...

  6. SharePoint 2013 开发——开发并部署Provider-hosted APP

    博客地址:http://blog.csdn.net/FoxDave 本篇我们用Visual Studio创建并部署一个SharePoint Provider-hosted应用程序. 打开Visua ...

  7. 笔记本安装Win2012R2 心得(包含无线网卡+有线网卡驱动解决方法)

    笔记本:联想昭阳E47G 无线网卡安装方法: 系统安装完毕后将自动识别无线网卡驱动,但需要手动允许WLAN服务开启.(建议,如果是拿来办公或者家用,可以安装上桌面体验)不然,QQ发的截图双击都看不起. ...

  8. 使用GoldenGate进行平台迁移和数据库升级(9i->11g)步骤描述

    在一个场景中,需要从Solaris SPARC将数据库迁移到Linux X86-64,同时,数据库版本从原有的oracle 9i(9.2.0.5)升级到11g(11.2.0.4)使用OGG的数据同步功 ...

  9. Python的平凡之路(1)

    2016-07-26   一.Python简介   Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.它的特点如下: 面向对象.解释语言.交互性.模块化.动态性.高级语言.可移植.可 ...

  10. linux学习笔记3:linux的网络配置,rpm包,shell以及samba服务器的使用和安装

    1.linux下的shell<linux命令.编辑器和shell编程> (1)shell种类有很多,常用的有三种,在linux可以通过ls -l /bin/*sh 来显示所有已安装的she ...