默认情况下,所有NumPy函数都可以在SciPy(命名空间)中使用。当导入SciPy时,不需要显式地导入NumPy函数。NumPy的主要对象是n次多维数组ndarray,SciPy构建在ndarray数组之上,ndarray是存储单一数据类型的多维数组。在NumPy中,维度称为轴,坐标轴的数量称为秩。

通常线性代数主要处理矩阵运算,现在,让我们复习一下NumPy中向量/数组和矩阵的基本功能。

NumPy ndarray数组

ndarray是NumPy中最重要的类。

标准的Python列表(list)中,元素是对象。如:L = [1, 2, 3],需要3个指针和三个整数对象,对于数值运算比较浪费资源。

与此不同,ndarray中元素直接存储为原始数据,元素的类型由ndarray对象中的属性dtype描述。

当ndarray数组中的元素,通过索引或切片返回时,会根据dtype,从原始数据转换成Python对象,以便外部使用。

示例

将Python类数组对象转换为NumPy数组

import numpy as np
list = [1,2,3,4]
arr = np.array(list)
print (arr)
print (type(arr))

输出

[1 2 3 4]
<class 'numpy.ndarray'>

创建NumPy数组

NumPy中,可以使用下面介绍的内置函数创建ndarrray数组。

zeros()

zeros()函数创建数组,并且把数组元素的值初始化为0,可以指定数组形状和数据类型。

示例

import numpy as np
print (np.zeros((2, 3)))

输出

[[0. 0. 0.]
[0. 0. 0.]]

ones()

ones()函数创建数组,并且把数组元素的值初始化为1,可以指定数组形状和数据类型。

示例

import numpy as np
print (np.ones((2, 3)))

输出

[[1. 1. 1.]
[1. 1. 1.]]

arange()

arange()函数创建递增数组。

示例

import numpy as np
print (np.arange(7))

输出

[0 1 2 3 4 5 6]

数组的数据类型

数据类型对象dtype,是描述数组中元素数据类型的对象。

示例

import numpy as np
arr = np.arange(2, 10, dtype = np.float)
print (arr)
print ("数组数据类型 :", arr.dtype)

输出

[ 2. 3. 4. 5. 6. 7. 8. 9.]
数组数据类型 : float64

linspace()

linspace()函数创建一个数组,该数组包含指定区间内均匀分布的值。

示例

import numpy as np
print (np.linspace(1., 4., 6))

输出

[1.  1.6 2.2 2.8 3.4 4. ]

矩阵

矩阵是一种特殊的二维数组,它有一些特殊的运算符,如*(矩阵乘法)和**(矩阵幂)。

示例

import numpy as np
print (np.matrix('1 2; 3 4'))

输出

[[1 2]
[3 4]]

矩阵转置

将矩阵的行列互换得到的新矩阵,称为转置矩阵。

示例

import numpy as np
mat = np.matrix('1 2; 3 4')
mat.T

输出

matrix([[1, 3],
[2, 4]])

矩阵的共轭转置

共轭就是矩阵每个元素都取共轭(复数的实部不变,虚部取负)。

共轭转置就是先取共轭,再取转置。

示例

import numpy as np
mat = np.matrix('1 2; 3 4')
print (mat.H)

输出

matrix([[1, 3],
[2, 4]])

单位矩阵

单位矩阵在矩阵的乘法中,起着特殊的作用,如同数的乘法中的1。单位矩阵是个方阵,从左上角到右下角的对角线(称为主对角线)上的元素均为1,除此以外全都为0。

示例

创建单位矩阵:

import numpy.matlib
import numpy as np
print (np.matlib.identity(5))

输出

[[1. 0. 0. 0. 0.]
[0. 1. 0. 0. 0.]
[0. 0. 1. 0. 0.]
[0. 0. 0. 1. 0.]
[0. 0. 0. 0. 1.]]

逆矩阵

逆矩阵的数学定义:存在矩阵M以及矩阵N,假如M*N = 矩阵I(Identify Matrix单位矩阵),那么矩阵M和矩阵N互为逆矩阵。

示例

求一个矩阵的逆矩阵:

import numpy as np
mat = np.matrix('1 2; 3 4')
mat2 = mat.I
print(mat2)

输出

[[-2.   1. ]
[ 1.5 -0.5]]

SciPy 基础功能的更多相关文章

  1. 可在广域网部署运行的QQ高仿版 -- GG叽叽V3.0,完善基础功能(源码)

    (前段时间封闭式开发完了一个项目,最近才有时间继续更新GG的后续版本,对那些关注GG的朋友来说,真的是很抱歉.)GG的前面几个版本开发了一些比较高级的功能,像视频聊天.远程桌面.文件传送.远程磁盘等, ...

  2. 谷歌Chrome浏览器开发者工具的基础功能

    上一篇我们学习了谷歌Chrome浏览器开发者工具的基础功能,下面介绍的是Chrome开发工具中最有用的面板Sources.Sources面板几乎是最常用到的Chrome功能面板,也是解决一般问题的主要 ...

  3. Netsharp快速入门(之16) Netsharp基础功能(权限管理)

    第5章     Netsharp基础功能 5.1     权限配置 5.1.1  功能权限 1.配置权限功能点,打开平台工具-基础业务-操作管理 2.选择资源节点为销售订单,点添加常用操作,添加完成后 ...

  4. 李洪强iOS开发之-环信03_集成 SDK 基础功能

    李洪强iOS开发之-环信03_集成 SDK 基础功能 集成 SDK 基础功能 在您阅读此文档时,我们假定您已经具备了基础的 iOS 应用开发经验,并能够理解相关基础概念. SDK 同步/异步方法区分 ...

  5. wc基础功能

    第一次作业 项目地址 https://gitee.com/xxlznb/WordCount PSP WordCount 预估耗时(分钟) 实际耗时 计划 20 30 预估任务需要时间 20 30 开发 ...

  6. Keepalived详解(三):Keepalived基础功能应用实例【转】

    Keepalived基础功能应用实例: 1.Keepalived基础HA功能演示: 在默认情况下,Keepalived可以实现对系统死机.网络异常及Keepalived本身进行监控,也就是说当系统出现 ...

  7. jmeter 基础功能详解

    jmeter 基础功能详解 thread group:包含一组线程,每个线程独立地执行测试计划. sampler:采样器,有多种不同的sample实现,用来发起各种请求,如http请求,jdbc请求, ...

  8. (转)Chrome开发者工具不完全指南(一、基础功能篇)

    本篇转载自卖烧烤夫斯基,并做了小部分的修改. 原文地址:Chrome开发者工具不完全指南(一.基础功能篇) 原作者:卖烧烤夫斯基 就算你不是一名前端开发工程师,相信你也不会对Chrome浏览器感到陌生 ...

  9. 六、EnterpriseFrameWork框架基础功能之权限管理

    回<[开源]EnterpriseFrameWork框架系列文章索引> 从本章开始进入框架的第二块内容“EnterpriseFrameWork框架的基础功能”,包括:权限管理.字典数据管理. ...

随机推荐

  1. Navicat Premium 12安装及激活

    一.安装 百度云下载地址:https://pan.baidu.com/s/1T5BjpBqLtwCy26szcKSdKw 提取码:ujzx 二.激活步骤 ①将navicat-keygen-for-x6 ...

  2. 删除Autorun.inf的方法

    你的电脑的每个分区根目录都有一个autorun.inf的文件夹,查看属性是只读+隐藏,且无法删除.无法取得权限!点进去,却显示的是控制面板的内容? 其实这个不是病毒,而是用来防病毒,一些系统封装工具本 ...

  3. Swift3.0-基本运算符

    一.简介 运算符是检查.改变.合并值的特殊符号或者短语.在本篇文章中只介绍基本运算符,Swift中包含的高级运算符(比如溢出运算符)不在其中.Swift中的运算符和OC中的运算法还是有比较大的区别的, ...

  4. 吴裕雄--天生自然PythonDjangoWeb企业开发:解决ModuleNotFoundError: No module named 'config'报错

    使用创建完模块应用之后python manage.py startapp test_app,您应该进入settings.py并将其注册到

  5. GitHub 网站汉化

    居然是一个中文Github网站!该不会是个假的吧? 2018-09-03 17:30 前几天分享了一篇文章——3个搜索技巧!在 GitHub上快速找到实用资源!眼尖心细的读者发现了文中的Github网 ...

  6. 【转】Python中*args和**kwargs的区别

    一.*args的使用方法 *args 用来将参数打包成tuple给函数体调用 例子一: 输出结果以元组的形式展示 def function(*args): print(args, type(args) ...

  7. Unity表面着色器

    表面着色器和之前无光照着色器不同,其中没有顶点着色器和片元着色器,而增加了光照函数: 接下写了一个求两个贴图的光照效果 两个贴图做插值运算: Shader "Custom/SurfaceSh ...

  8. Navigation源码(一) move_base最全解析

    一.概述 目测是全网最全的解析,花了几个小时通读并整理的,供大家参考学习. 概况的话可以看下古月居 https://www.guyuehome.com/270,其实它是翻译官方的,英语ok的可以去ro ...

  9. Spring 各个组件架构

  10. 郁闷的 IE6/7/8 所遇兼容问题

    IE6,7只支持inline元素设置为inline-block,但不支持block元素转换成inline-block,所以非inline元素在IE6,7下要转换成inline-block,需先转换成i ...