Numpy是Python的一个科学计算的库,提供了矩阵运算的功能,其一般与Scipy、matplotlib一起使用。其实,list已经提供了类似于矩阵的表示形式,不过numpy为我们提供了更多的函数。

NumPy数组是一个多维数组对象,称为ndarray。数组的下标从0开始,同一个NumPy数组中所有元素的类型必须是相同的。

>>> import numpy as np

数组的创建

使用numpy.array方法将tuplelist, array, 或者其他的序列模式的数据转创建为 ndarray, 默认创建一个新的 ndarray.

>>> np.array([1,2,3,4])
[1 2 3 4]>>> b = array( [ (1.5,2,3), (4,5,6)  ]  )  
array([[ 1.5,  2. ,  3. ],  [ 4. ,  5. ,  6. ]])  >>> c = array( [ [1,2], [3,4] ], dtype=complex)
#指定数组中元素的类型
>>> c  array([[ 1.+0.j,  2.+0.j],  [ 3.+0.j,  4.+0.j]]) 

生成均匀分布的array:
arange(最小值,最大值,步长)(左闭右开) : 创建等差数列
linspace(最小值,最大值,元素数量)
logspace(开始值, 终值, 元素个数): 创建等比数列

>>> np.arange(15)
[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14]>>> np.arange(15).reshape(3,5)
[[ 0  1  2  3  4][ 5  6  7  8  9][10 11 12 13 14]]>>> np.arange( 0, 2, 0.3 )
array([ 0. ,  0.3,  0.6,  0.9,  1.2,  1.5,  1.8])>>> np.linspace(1,3,9)
[ 1.    1.25  1.5   1.75  2.    2.25  2.5   2.75  3.  ]

生成特殊数组
np.ones: 创建一个数组, 其中的元素全为 1
np.zeros: 创建元素全为 0 的数组, 类似 np.ones
np.empty创建一个内容随机并且依赖与内存状态的数组。
np.eye: 创建一个对角线为 1 其他为 0 的矩阵.
np.identity: 创建一个主对角线为 1 其他为 0 的方阵.

>>> np.zeros((3,4))
[[ 0.  0.  0.  0.][ 0.  0.  0.  0.][ 0.  0.  0.  0.]]>>> np.ones((3,4))
[[ 1.  1.  1.  1.][ 1.  1.  1.  1.][ 1.  1.  1.  1.]]>>> np.eye(3)
[[ 1.  0.  0.][ 0.  1.  0.][ 0.  0.  1.]]

获取数组的属性

>>> a = np.zeros((2,2,2))
>>> a.ndim   #数组的维数
3
>>> a.shape  #数组每一维的大小
(2, 2, 2)
>>> a.size   #数组全部元素的数量
8
>>> a.dtype  #数组中元素的类型
float64
>>> print a.itemsize  #每个元素所占的字节数
8

数组索引,切片,赋值

‘…’符号表示将所有未指定索引的维度均赋为 ‘:’
‘:’在python中表示该维所有元素

>>> a = np.array( [[2,3,4],[5,6,7]] )
>>> a
[[2 3 4][5 6 7]]
>>> a[1,2]
7
>>> a[1,:]
[5 6 7]
>>> print a[1,1:2]
[6]
>>> a[1,:] = [8,9,10]
>>> a
[[ 2  3  4][ 8  9 10]]
>>> c[1,...]                                   # same as c[1,:,:] or c[1]
array([[100, 101, 102],[110, 112, 113]])
>>> c[...,2]                                   # same as c[:,:,2]
array([[  2,  13],[102, 113]])
>>> def f(x,y):
...     return 10*x+y
...
>>> b = np.fromfunction(f,(5,4),dtype=int)    #
>>> b
array([[ 0,  1,  2,  3],[10, 11, 12, 13],[20, 21, 22, 23],[30, 31, 32, 33],[40, 41, 42, 43]]) 

数组操作

>>> a = np.ones((2,2))
>>> b = np.eye(2)
>>> print a
[[ 1.  1.][ 1.  1.]]
>>> print b
[[ 1.  0.][ 0.  1.]]
>>> print a > 2
[[False False][False False]]
>>> print a+b             #数组加,对应位置相加
[[ 2.  1.][ 1.  2.]]
>>> print a-b             #数组减,对应位置相减
[[ 0.  1.][ 1.  0.]]
>>> print b*2             #数组与数值相乘,对应位置乘
[[ 2.  0.][ 0.  2.]]
>>> print (a*2)*(b*2)     #数组与数组相乘,按位置一对一相乘
[[ 4.  0.][ 0.  4.]]
>>> print b/(a*2)          #数组与数组相除,按位置一对一相除
[[ 0.5  0. ][ 0.   0.5]]
>>> print a.dot(b)                    # matrix product,矩阵乘
>>> np.dot(a,a)                       #矩阵乘法
array([[ 2.,  2.],[ 2.,  2.]])
>>> print (a*2)**4
[[ 16.  16.][ 16.  16.]]
>>> b = a              #浅拷贝
>>> b is a
True
>>> c = a.copy()       #深拷贝
>>> c is a
False

内置函数(min,max,sum),同时可以使用axis指定对哪一维进行操作:

 >>> a.sum()
4.0
>>> a.sum(axis=0)    #计算每一列(二维数组中类似于矩阵的列)的和
array([ 2.,  2.])
>>> a.min()          #数组最小值
1.0
>>> a.max()          #数组最大值
1.0

使用numpy下的方法:

>>> np.sin(a)
array([[ 0.84147098,  0.84147098],[ 0.84147098,  0.84147098]])
>>> np.max(a)
1.0
>>> np.floor(a)
array([[ 1.,  1.],[ 1.,  1.]])
>>> np.exp(a)               #e^x
array([[ 2.71828183,  2.71828183],[ 2.71828183,  2.71828183]])
>>> print np.vstack((a,b))   #合并数组
[[ 1.  1.] [ 1.  1.][ 1.  0.][ 0.  1.]]
>>> print np.hstack((a,b))   #合并数组
[[ 1.  1.  1.  0.][ 1.  1.  0.  1.]]
>>> print a.transpose()       #转置

numpy.linalg模块中有很多关于矩阵运算的方法:

>>> import numpy.linalg as nplg

NumPy中的基本数据类型

名称 描述
bool 用一个字节存储的布尔类型(True或False)
inti 由所在平台决定其大小的整数(一般为int32或int64)
int8/16/32/64 整数,1/2/4/8个字节大小
uint8/16/32/64 无符号整数
float16/32/64 半/单/双精度浮点数,16/32/64位,指数、精度也不同
complex64/128 复数,分别用两个32/64位浮点数表示实部和虚部

输出数组
当输出一个数组时,NumPy以特定的布局用类似嵌套列表的形式显示:

  • 第一行从左到右输出
  • 每个切片通过一个空行与下一个隔开
  • 一维数组被打印成行,二维数组成矩阵,三维数组成矩阵列表。
  • 如果一个数组太长,则NumPy自动省略中间部分而只打印两端的数据: 
>>> a = arange(6)                         # 1d array
>>> print a  [0 1 2 3 4 5]  >>> b = arange(12).reshape(4,3)           # 2d array
>>> print b  [[ 0  1  2]  [ 3  4  5]  [ 6  7  8]  [ 9 10 11]]   
>>> c = arange(24).reshape(2,3,4)         # 3d array
>>> print c  [[[ 0  1  2  3]  [ 4  5  6  7]  [ 8  9 10 11]]  [[12 13 14 15]  [16 17 18 19]  [20 21 22 23]]]  

python Numpy中array详解相关推荐

  1. python getitem_python中__getitem__详解

    今天在学习为深度学习数据预处理的时候用了一下"__getitem__"方法,发现还挺好用,下面详细解释一下. __getitem__(self,key): 把类中的属性定义为序列, ...

  2. python二维元素向量_详解python Numpy中求向量和矩阵的范数

    在python Numpy中求向量和矩阵的范数实例 np.linalg.norm(求范数):linalg=linear(线性)+algebra(代数),norm则表示范数. 函数参数 x_norm=n ...

  3. python时间函数详解_Python:Numpy库基础分析——详解datetime类型的处理

    原标题:Python:Numpy库基础分析--详解datetime类型的处理 Python:Numpy库基础分析--详解datetime类型的处理 关于时间的处理,Python中自带的处理时间的模块就 ...

  4. Numpy.array()详解 、np.array与np.asarray辨析、 np.array和np.ndarry的区别

    记录一下numpy.array()的详细用法,以及与np.asarray()和np.ndarray()的区别. 目录 1. Numpy.array()详解 1.1 函数形式 1.2 参数详解 1.3 ...

  5. Python中lambda详解(包括内置函数map、reduce、filter、sorted、max)

    文章目录 一.lambda是什么? 1.lambda语法 2.语法详解 二.lambda的使用 1.定义 2.调用 3.替换 4.作返回值 三.lambda作参数 1.map函数 2.reduce函数 ...

  6. Numpy.array()详解

    1. Numpy.array()详解 该函数的作用一言蔽之就是用来产生数组. 1.1 函数形式 numpy.array(object, dtype=None, copy=True, order='K' ...

  7. Jupyter Notebook中numpy什么意思 import numpy as np详解

    Jupyter Notebook中numpy什么意思 import numpy as np详解 1.Numpy是啥 Numpy是用C实现的数据计算库. 主要是用来处理相同类型.固定长度的元素,可以用来 ...

  8. python的继承用法_【后端开发】python中继承有什么用法?python继承的用法详解

    本篇文章给大家带来的内容是关于python中继承有什么用法?python继承的用法详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 面向对象三大特征 1.封装:根据职责将属性和方法 ...

  9. python中的[:-1] [:,:-1] python矩阵numpy中array的冒号 逗号

    如何理解[:-1]  [:,:-1] data = np.loadtxt('data.csv', delimiter = ',')     X = data[:,:-1]    #取所有行,取列到倒数 ...

最新文章

  1. Linux分区的认识
  2. VS2010运行类向导提示“未实现该方法或操作”
  3. vs添加码云远程_项目git步骤,将项目托管到码云。git本地分支推送到远程分支...
  4. linux查看指定用户的所有进程
  5. ArcGIS实验教程——实验四:数字化属性数据的采集
  6. 12、java中的I/O流(2)
  7. js ‘use strict’详解
  8. kubernetes挂载存储
  9. 怎样通过Java程序提交yarn的mapreduce计算任务
  10. java面试基础_java面试之基础(总结)
  11. 详解Unity中的射线与射线检测
  12. 计算机的静态存储区在哪里,静态随机访问存储器
  13. 设置成功的开源计划办公室(OSPO)的指南
  14. Android Dialog与软键盘的正确打开方式
  15. 计算机高配置表格,数据大的excel表格对显卡有要求-求excel大量数据处理的电脑配置...
  16. 基于android手机的备份与还原
  17. 2021年最新调查:86% 的 Java 开发人员 依赖 Spring 框架
  18. iPhone4S价格走势平稳 现价5999值得买
  19. react组件中的constructor和super小知识
  20. 点击链接 qq咨询 代码

热门文章

  1. nz-upload 文件上传 - Angular
  2. 微信小程序用户登录前后台详解
  3. 风控模型—WOE与IV指标的深入理解应用
  4. 一个程序员单枪匹马,靠一个网站一年赚1个亿
  5. 专注创新型蛋白工具研发,上海恺佧生物科技完成3000万元Pre-A轮融资...
  6. JSON转JS对象,JS对象转JSON
  7. shell实现除法计算器
  8. CGB2105-Day03
  9. python编程猜数字小游戏(简单)
  10. 上、下运动神经元的区别