Python中Numpy ndarray的使用详解


Posted in Python onMay 24, 2019

本文主讲Python中Numpy数组的类型、全0全1数组的生成、随机数组、数组操作、矩阵的简单运算、矩阵的数学运算。

尽管可以用python中list嵌套来模拟矩阵,但使用Numpy库更方便。 

定义数组

>>> import numpy as np
>>> m = np.array([[1,2,3], [2,3,4]])    #定义矩阵,int64
>>> m
array([[1, 2, 3],
    [2, 3, 4]])
>>> m = np.array([[1,2,3], [2,3,4]], dtype=np.float)  #定义矩阵,float64
>>> m
array([[1., 2., 3.],
    [2., 3., 4.]])
>>> print(m.dtype)  #数据类型  
float64
>>> print(m.shape)  #形状2行3列
(2, 3)
>>> print(m.ndim)   #维数
2
>>> print(m.size)   #元素个数
6
>>> print(type(m))
<class 'numpy.ndarray'>

还有一些特殊的方法可以定义矩阵

>>> m = np.zeros((2,2))     #全0
>>> m
array([[0., 0.],
    [0., 0.]])
>>> print(type(m))        #也是ndarray类型
<class 'numpy.ndarray'>
>>> m = np.ones((2,2,3))    #全1
>>> m = np.full((3,4), 7)    #全为7
>>> np.eye(3)          #单位矩阵
array([[1., 0., 0.],
    [0., 1., 0.],
    [0., 0., 1.]])
>>> np.arange(20).reshape(4,5)  #生成一个4行5列的数组
>>>
>>> np.random.random((2,3))    #[0,1)随机数
array([[0.51123127, 0.40852721, 0.26159126],
    [0.42450279, 0.34763668, 0.06167501]])
>>> np.random.randint(1,10,(2,3))  #[1,10)随机整数的2行3列数组
array([[5, 4, 9],
    [2, 5, 7]])
>>> np.random.randn(2,3)       #正态随机分布
array([[-0.29538656, -0.50370707, -2.05627716],
    [-1.50126655, 0.41884067, 0.67306605]])
>>> np.random.choice([10,20,30], (2,3))   #随机选择
array([[10, 20, 10],
    [30, 10, 20]])
>>> np.random.beta(1,10,(2,3))       #贝塔分布
array([[0.01588963, 0.12635485, 0.22279098],
    [0.08950147, 0.02244569, 0.00953366]])

操作数组

>>> from numpy import *
>>> a1=array([1,1,1])  #定义一个数组
>>> a2=array([2,2,2])
>>> a1+a2        #对于元素相加
array([3, 3, 3])
>>> a1*2         #乘一个数
array([2, 2, 2])

##
>>> a1=np.array([1,2,3])
>>> a1
array([1, 2, 3])
>>> a1**3       #表示对数组中的每个数做立方
array([ 1, 8, 27])

##取值,注意的是它是以0为开始坐标,不matlab不同
>>> a1[1]
2

##定义多维数组
>>> a3=np.array([[1,2,3],[4,5,6]])
>>> a3
array([[1, 2, 3],
    [4, 5, 6]])
>>> a3[0]       #取出第一行的数据
array([1, 2, 3])
>>> a3[0,0]      #第一行第一个数据
1
>>> a3[0][0]     #也可用这种方式
1
>>> a3
array([[1, 2, 3],
    [4, 5, 6]])
>>> a3.sum(axis=0)   #按行相加,列不变
array([5, 7, 9])
>>> a3.sum(axis=1)   #按列相加,行不变
array([ 6, 15])

矩阵的数学运算

关于方阵

>>> m = np.array([[1,2,3], [2,2,3], [2,3,4]])  #定义一个方阵
>>> m
array([[1, 2, 3],
    [2, 2, 3],
    [2, 3, 4]])
>>> print(np.linalg.det(m))    #求行列式
1.0
>>> print(np.linalg.inv(m))    #求逆
[[-1. 1. 0.]
 [-2. -2. 3.]
 [ 2. 1. -2.]]
>>> print(np.linalg.eig(m))   #特征值 特征向量
(array([ 7.66898014+0.j    , -0.33449007+0.13605817j,
    -0.33449007-0.13605817j]), array([[-0.47474371+0.j    , -0.35654645+0.23768904j,
    -0.35654645-0.23768904j],
    [-0.53664812+0.j    , 0.80607696+0.j    ,
     0.80607696-0.j    ],
[-0.6975867 +0.j    , -0.38956192-0.12190158j,
    -0.38956192+0.12190158j]]))
>>> y = np.array([1,2,3])
>>> print(np.linalg.solve(m, y))  #解方程组
[ 1. 3. -2.]

矩阵乘法

矩阵乘:按照线性代数的乘法

>>> a = np.array([[1,2,3], [2,3,4]])
>>> b = np.array([[1,2], [3,4], [5,6]])
>>> a
array([[1, 2, 3],
    [2, 3, 4]])
>>> b
array([[1, 2],
    [3, 4],
    [5, 6]])
>>> np.dot(a, b)   #方法一
array([[22, 28],
    [31, 40]])
>>> np.matmul(a,b)  #方法二
array([[22, 28],

注:一维数组之间运算时,dot()表示的是内积。

点乘:对应位置相乘

>>> a = np.array([[1,2],[3,4]])
>>> b = np.array([[1,1],[2,2]])
>>> a
array([[1, 2],
    [3, 4]])
>>> b
array([[1, 1],
    [2, 2]])
>>> a * b          #方法一
array([[1, 2],
    [6, 8]])
>>> np.multiply(a, b)  #方法二
array([[1, 2],
    [6, 8]])

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中运行并行任务技巧
Feb 26 Python
Python的Flask框架中实现分页功能的教程
Apr 20 Python
常见的python正则用法实例讲解
Jun 21 Python
简单谈谈Python中函数的可变参数
Sep 02 Python
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
Jul 27 Python
Python中GeoJson和bokeh-1的使用讲解
Jan 03 Python
python实现银联支付和支付宝支付接入
May 07 Python
Python使用正则表达式分割字符串的实现方法
Jul 16 Python
python 的 openpyxl模块 读取 Excel文件的方法
Sep 09 Python
python画蝴蝶曲线图的实例
Nov 21 Python
Keras之自定义损失(loss)函数用法说明
Jun 10 Python
详解OpenCV获取高动态范围(HDR)成像
Apr 29 Python
numpy数组之存取文件的实现示例
May 24 #Python
Python实现使用request模块下载图片demo示例
May 24 #Python
Python实现操纵控制windows注册表的方法分析
May 24 #Python
Django框架会话技术实例分析【Cookie与Session】
May 24 #Python
Django框架中间件(Middleware)用法实例分析
May 24 #Python
python与字符编码问题
May 24 #Python
Python读取stdin方法实例
May 24 #Python
You might like
PHP中isset()和unset()函数的用法小结
2014/03/11 PHP
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
2014/06/12 PHP
php导入excel文件到mysql数据库的方法
2015/01/14 PHP
Twig模板引擎用法入门教程
2016/01/20 PHP
33个优秀的 jQuery 图片展示插件分享
2012/03/14 Javascript
利用javascript解决图片缩放及其优化的代码
2012/05/23 Javascript
javascript中的document.open()方法使用介绍
2013/10/09 Javascript
跟我学习javascript的函数和函数表达式
2015/11/16 Javascript
利用vue-router实现二级菜单内容转换
2016/11/30 Javascript
JS中的数组转变成JSON格式字符串的方法
2017/05/09 Javascript
原生JS封装_new函数实现new关键字的功能
2018/08/12 Javascript
vue项目打包上传github并制作预览链接(pages)
2019/04/19 Javascript
Vue开发之封装分页组件与使用示例
2019/04/25 Javascript
Vue安装浏览器开发工具的步骤详解
2019/05/12 Javascript
es6函数之箭头函数用法实例详解
2020/04/25 Javascript
JavaScript的垃圾回收机制与内存管理
2020/08/06 Javascript
详解Python中的join()函数的用法
2015/04/07 Python
Python中的一些陷阱与技巧小结
2015/07/10 Python
Python3.x爬虫下载网页图片的实例讲解
2018/05/22 Python
Python3自动签到 定时任务 判断节假日的实例
2018/11/13 Python
python实现名片管理系统
2018/11/29 Python
如何一键升级Python所有包
2020/11/05 Python
Django 用户认证Auth组件的使用
2020/11/30 Python
巴西最大的家具及装饰用品店:Mobly
2017/10/11 全球购物
KIKO MILANO西班牙官网:意大利领先的化妆品和护肤品品牌
2019/05/03 全球购物
AOP的定义以及作用
2013/09/08 面试题
财务与信息服务专业推荐信
2013/11/28 职场文书
绿色环保家庭事迹材料
2014/08/31 职场文书
2014国庆65周年领导讲话稿(3篇)
2014/09/21 职场文书
教师四风问题整改措施
2014/09/25 职场文书
四风问题个人对照检查材料
2014/09/26 职场文书
2015年感恩母亲节活动方案
2015/05/04 职场文书
简爱电影观后感
2015/06/10 职场文书
Python OpenCV 图像平移的实现示例
2021/06/04 Python
MyBatis自定义SQL拦截器示例详解
2021/10/24 Java/Android
Python循环之while无限迭代
2022/04/30 Python