原标题:Python之numpy数组学习(一)

我回来了。

前言

前面已经安装并学习了Python中的科学计算库,今天主要学习下numpy数组。

Numpy数组对象

Numpy中的多维数组称为ndarray,它有两个组成部分。

数据本身。

描述数据的元数据。

在数组的处理过程中,原始数据不受影响,变化的只是元数据。

Numpy数组通常是由相同种类的元素组成,即数组中数据类型必须一致。好处是:数组元素类型相同,可轻松确定存储数组所需的空间大小。同时,numpy可运用向量化运算来处理整个数组。Numpy数组的索引从0开始。(这里我使用的是ipython命令行,ipython最近刚开始用,以后详细介绍下。)

In [3]: import numpy as np

In [4]: a = np.arange(5)

In [5]: a.dtype

Out[5]: dtype('int32')

上面数组的数据类型为int32,这一般跟你安装的Python版本有关。不过我安装的是64位,不知道怎么回事这里是int32,后面再检查下。

上一篇我们说了向量(一维的numpy数组)的创建方法,下面看一下上面生成的向量。

In [6]: a

Out[6]: array([0, 1, 2, 3, 4])

In [7]: a.shape

Out[7]: (5,)

可以看到,该向量有5个元素,该数组的shape属性是一个元组,存放的是数组在每一个维度的长度。

创建多维数组

我们已经知道了如何创建向量,下面开始建立多维numpy数组,生成矩阵后,再看它的形状。

In [8]: m = np.array([np.arange(2),np.arange(2)])

In [9]: m

Out[9]:

array([[0, 1],

[0, 1]])

上面我们用arrange方法创建了一个简单的2*2的数组,利用array()函数创建数组时,需要传递给它一个对象,并且这个对象必须是数组类型。如Python的列表。

创建之后,我们要选择矩阵的元素,这里就相当于一个二维坐标系,我们只要找到对应的坐标即可。

In [10]: m[0,0]

Out[10]: 0

In [11]: m[0,1]

Out[11]: 1

In [12]: m[1,0]

Out[12]: 0

In [13]: m[1,1]

Out[13]: 1

可以看到,选择数组元素很简单,对于数组m,只要通过m[m,n]的形式,就能访问数组内的元素,其中m和n为数组元素的下标,从0开始。

Numpy的数值类型

Python本身支持整型、浮点型和复数型,为了科学计算,numpy提供了更加丰富的数据类型,注意:numpy跟数学运算有关的数据类型的名称都以数字结尾。这个数字指示了该类型的变量所占用的二进制位数。Numpy的各种数值类型如下图所示:

每一种数据类型都有相应的转换函数,许多函数都带有一个指定数据类型的参数,该参数一般可选。

In [15]: np.float64(30)

Out[15]: 30.0

In [16]: np.bool(30)

Out[16]: True

In [17]: np.float(True)

Out[17]: 1.0

In [18]: np.int8(30)

Out[18]: 30

In [20]: np.arange(7, dtype='uint16')

Out[20]: array([0, 1, 2, 3, 4, 5, 6],dtype=uint16)

注意:不允许把复数转化成整型。也不允许把复数转化为浮点数,但是允许把浮点数转化为复数。复数的实部和虚部分别使用real()函数和imag()函数提取。

数据类型对象是numpy.dtype类的实例。数组是一种数据类型。数据类型对象表明了数据占用的字节数,所占用字节的具体数目一般存放在类dtype的itemsize中。

In [6]: import numpy as np

In [7]: a = np.arange(5)

In [8]: a

Out[8]: array([0, 1, 2, 3, 4])

In [9]: a.dtype.itemsize

Out[9]: 4

一维数组的切片和索引

一维numpy数组的切片操作和Python列表的切片一样,看一下下面的例子来体验一下。

In [34]: a = np.arange(9)

In [35]: a

Out[35]: array([0, 1, 2, 3, 4, 5, 6, 7, 8])

#通过下标取数据

In [36]: a[3:7]

Out[36]: array([3, 4, 5, 6])

#用下标选择元素,范围0到7,下标每次递增2

In [37]: a[:7:2]

Out[37]: array([0, 2, 4, 6])

#反转数组

In [38]: a[::-1]

Out[38]: array([8, 7, 6, 5, 4, 3, 2, 1, 0])

小结

今天学习一下Python中numpy的简单使用。希望通过上面的操作能帮助大家。如果你有什么好的意见,建议,或者有不同的看法,我都希望你留言和我们进行交流、讨论。

欢迎关注微信公众号,访问更多精彩:AiryData。

如需转载,请联系授权,谢谢合作。返回搜狐,查看更多

责任编辑:

python numpy数据类型_Python之numpy数组学习(一)相关推荐

  1. python numpy数据类型_Python中numpy的数据类型,python,dtype

    type,dtype,astype的区别 type():返回数据结构的类型(list,dict等).如type([1,2,3,4])返回list.list中可以包含不同数据类型的元素. dtype() ...

  2. python numpy数据类型_python numPy模块 与numpy里的数据类型、数据类型对象dtype

    学习链接:http://www.runoob.com/numpy/numpy-tutorial.html 简介: numPy是python语言的一个扩展库,是一个运行非常快的数学库,主要用于数组计算. ...

  3. python之numpy基础_Python之NumPy学习(基础篇)

    NumPy(NumericalPython的缩写)是一个开源的Python科学计算库.使用NumPy,就可以很自然的使用数组和矩阵.NumPy包含很多实用的数学函数,涵盖线性代数运算.傅里叶变换和随机 ...

  4. python阈值计算_python – 在numpy中计算超过阈值的数组值的最快方法

    使用cython可能是一个不错的选择. import numpy as np cimport numpy as np cimport cython from cython.parallel impor ...

  5. python炒股模块_Python数据分析-numpy模块、pandas模块.基本操作、股票案例

    索引操作和列表同理 arr = np.random.randint(0,100,size=(5,6)) arr array([[14, 89, 71, 96, 1, 94], [30, 98, 10, ...

  6. python正态分布随机数_Python使用numpy产生正态分布随机数的向量或矩阵操作示例...

    本文实例讲述了Python使用numpy产生正态分布随机数的向量或矩阵操作.分享给大家供大家参考,具体如下: 简单来说,正态分布(Normal distribution)又名高斯分布(Gaussian ...

  7. python 数据结构包_python 中numpy科学计算工具包——基础数据结构

    认识numpy基础数据结构 # 认识数组 ar = np.array([[1,2,3,4,5],[6,7,8,9,10]]) br = [[1,2,3,4,5],[6,7,8,9,10]] print ...

  8. python傅里叶变换库_python的numpy库和cv2库实现图像傅里叶变换

    码字不易,如果对您有所帮助,记着点赞哦! 一. 图像傅里叶变换原理: 对二维图像进行傅里叶变换用如下公式进行: 图像长M,高N.F(u,v)表示频域图像,f(x,y)表示时域图像.u的范围为[0,M- ...

  9. python的数据类型_Python支持哪些数据类型

    Python基本数据类型一般分为:数字.字符串.列表.元组.字典.集合这六种基本数据类型. 数字数字类型是不可更改的对象.对变量改变数字值就是生成/创建新的对象.Python支持多种数字类型: 整型( ...

最新文章

  1. 【错误记录】eclipse,android,logcat日志无法打印,真机调试
  2. 【Spring MVC学习】详解spring mvc 3.0常用注解
  3. php post登陆 json,php 之 post json 数据
  4. 骚年快答 | 为何微服务项目都使用单体代码仓库?
  5. Servlet API
  6. 北方工业大学gpa计算_北方大学联盟仓库的探索性分析
  7. DOM Element对象的offsetXXX方法
  8. 【HDU - 1263】 水果(STL)
  9. mysql从服务器配置_mysql主从服务器配置基础教程
  10. Razor 中的@rendersection
  11. 介绍个好点的,JAVA技术群
  12. 直接用自己服务器做图床可以吗_图床趣事
  13. SQL-SERVER触发器
  14. Android冷启动优化解析
  15. python ppt自动生成目录_利用python-pptx库读写操作PPT,批量自动生成或修改的PPT
  16. 缠论入门到精通理论到实战
  17. ectouch java_ectouch: 包含 ECTouch_v2.7.2_SC_UTF8 ECshop_v3.6.0_UTF8_release ECShop_V4.0.0_UTF8
  18. 目前SolidWorks软件哪个版本比较好用?更稳定一些?
  19. ipmitool 远程操作BMC控制服务器
  20. jQuery(一个JavaScript库)

热门文章

  1. 广东南方电网考试经典试题
  2. 怎么看服务器内存型号频率,怎么查看服务器内存频率
  3. python async await threading_Python - 从使用线程到使用 async/await
  4. Android当务之急:加大软件审核力度
  5. mysql away,MySQL server has gone away问题及其解决
  6. 【答读者问】零基础可以学习linux吗?
  7. Centos Linux 下基于bind的智能DNS搭建
  8. Docker(六)Harbor
  9. Docker与Docker Compose的安装以及Portainer容器管理工具
  10. 不退出_老人带娃也要有时间限制,这个时间不退出,影响家庭幸福