python Numpy中array详解
Numpy是Python的一个科学计算的库,提供了矩阵运算的功能,其一般与Scipy、matplotlib一起使用。其实,list已经提供了类似于矩阵的表示形式,不过numpy为我们提供了更多的函数。
NumPy数组是一个多维数组对象,称为ndarray。数组的下标从0开始,同一个NumPy数组中所有元素的类型必须是相同的。
>>> import numpy as np
数组的创建
使用numpy.array
方法将tuple
和list
, 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详解相关推荐
- python getitem_python中__getitem__详解
今天在学习为深度学习数据预处理的时候用了一下"__getitem__"方法,发现还挺好用,下面详细解释一下. __getitem__(self,key): 把类中的属性定义为序列, ...
- python二维元素向量_详解python Numpy中求向量和矩阵的范数
在python Numpy中求向量和矩阵的范数实例 np.linalg.norm(求范数):linalg=linear(线性)+algebra(代数),norm则表示范数. 函数参数 x_norm=n ...
- python时间函数详解_Python:Numpy库基础分析——详解datetime类型的处理
原标题:Python:Numpy库基础分析--详解datetime类型的处理 Python:Numpy库基础分析--详解datetime类型的处理 关于时间的处理,Python中自带的处理时间的模块就 ...
- 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 ...
- Python中lambda详解(包括内置函数map、reduce、filter、sorted、max)
文章目录 一.lambda是什么? 1.lambda语法 2.语法详解 二.lambda的使用 1.定义 2.调用 3.替换 4.作返回值 三.lambda作参数 1.map函数 2.reduce函数 ...
- Numpy.array()详解
1. Numpy.array()详解 该函数的作用一言蔽之就是用来产生数组. 1.1 函数形式 numpy.array(object, dtype=None, copy=True, order='K' ...
- Jupyter Notebook中numpy什么意思 import numpy as np详解
Jupyter Notebook中numpy什么意思 import numpy as np详解 1.Numpy是啥 Numpy是用C实现的数据计算库. 主要是用来处理相同类型.固定长度的元素,可以用来 ...
- python的继承用法_【后端开发】python中继承有什么用法?python继承的用法详解
本篇文章给大家带来的内容是关于python中继承有什么用法?python继承的用法详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 面向对象三大特征 1.封装:根据职责将属性和方法 ...
- python中的[:-1] [:,:-1] python矩阵numpy中array的冒号 逗号
如何理解[:-1] [:,:-1] data = np.loadtxt('data.csv', delimiter = ',') X = data[:,:-1] #取所有行,取列到倒数 ...
最新文章
- Linux分区的认识
- VS2010运行类向导提示“未实现该方法或操作”
- vs添加码云远程_项目git步骤,将项目托管到码云。git本地分支推送到远程分支...
- linux查看指定用户的所有进程
- ArcGIS实验教程——实验四:数字化属性数据的采集
- 12、java中的I/O流(2)
- js ‘use strict’详解
- kubernetes挂载存储
- 怎样通过Java程序提交yarn的mapreduce计算任务
- java面试基础_java面试之基础(总结)
- 详解Unity中的射线与射线检测
- 计算机的静态存储区在哪里,静态随机访问存储器
- 设置成功的开源计划办公室(OSPO)的指南
- Android Dialog与软键盘的正确打开方式
- 计算机高配置表格,数据大的excel表格对显卡有要求-求excel大量数据处理的电脑配置...
- 基于android手机的备份与还原
- 2021年最新调查:86% 的 Java 开发人员 依赖 Spring 框架
- iPhone4S价格走势平稳 现价5999值得买
- react组件中的constructor和super小知识
- 点击链接 qq咨询 代码