矩阵转置

numpy矩阵的常用用法

自闭症网瘾萝莉.ら 提交于 2019-11-30 02:35:46
基本操作 >>> m= np.mat([1,2,3]) #创建矩阵 >>> m matrix([[1, 2, 3]]) >>> m[0] #取一行 matrix([[1, 2, 3]]) >>> m[0,1] #第一行,第2个数据 2 >>> m[0][1] #注意不能像数组那样取值了 Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib64/python2.7/site-packages/numpy/matrixlib/defmatrix.py", line 305, in __getitem__ out = N.ndarray.__getitem__(self, index) IndexError: index 1 is out of bounds for axis 0 with size 1 #将Python的列表转换成NumPy的矩阵 >>> list=[1,2,3] >>> mat(list) matrix([[1, 2, 3]]) #Numpy dnarray转换成Numpy矩阵 >>> n = np.array([1,2,3]) >>> n array([1, 2, 3]) >>> np.mat(n) matrix([[1, 2, 3]]) #排序 >

矩阵求导(二)

混江龙づ霸主 提交于 2019-11-30 00:52:25
本文承接上篇 https:// zhuanlan.zhihu.com/p/24 709748 ,来讲矩阵对矩阵的求导术。使用小写字母x表示标量,粗体小写字母 表示列向量,大写字母X表示矩阵。矩阵对矩阵的求导采用了向量化的思路,常应用于二阶方法求解优化问题。 首先来琢磨一下定义。矩阵对矩阵的导数,需要什么样的定义?第一,矩阵F(p×q)对矩阵X(m×n)的导数应包含所有mnpq个偏导数 ,从而不损失信息;第二,导数与微分有简明的联系,因为在计算导数和应用中需要这个联系;第三,导数有简明的从整体出发的算法。我们先定义向量 (p×1)对向量 (m×1)的导数 (m×p),有 ;再定义矩阵的(按列优先)向量化 (mn×1),并定义矩阵F对矩阵X的导数 (mn×pq)。导数与微分有联系 。几点说明如下: 按此定义,标量f对矩阵X(m×n)的导数 是mn×1向量,与上篇的定义不兼容,不过二者容易相互转换。为避免混淆,用记号 表示上篇定义的m×n矩阵,则有 。虽然本篇的技术可以用于标量对矩阵求导这种特殊情况,但使用上篇中的技术更方便。读者可以通过上篇中的算例试验两种方法的等价转换。 标量对矩阵的二阶导数,又称Hessian矩阵,定义为 (mn×mn),是对称矩阵。对向量 或矩阵 求导都可以得到Hessian矩阵,但从矩阵 出发更方便。 ,求导时矩阵被向量化,弊端是这在一定程度破坏了矩阵的结构

Python-数据分析工具1-numpy

怎甘沉沦 提交于 2019-11-29 19:30:46
目录 1 ndarray数组 (0)ndarray数组属性 (1)创建基本数组 (2)创建特殊数组 (3)数组变换 (4)Numpy随机数函数 2 数组索引和切片 (0)数组切片:数组切片可以实现连续多元素选择 (1)数组索引 (2)布尔型索引 (3)花式索引 3 数组的运算 (0) 数组和标量间的运算(数组可以直接和标量进行算术、关系等运算) (1)通用函数运算(一种可以对数组间执行元素级运算的函数) (2)统计函数运算(对整个数组内或按指定轴向的数据进行统计) (3)集合函数运算 (4)条件逻辑运算 (5)布尔型数组运算 4 数组的存取 5 图像变换 1 ndarray数组 (0)ndarray数组属性 (1)创建基本数组 1.首先导入numpy库 import numpy as np 2.然后使用构造函数:np.array(arg),参数arg可以是列表或者元组 3.可以通过列表或元组创建一维、二维或多维数组 4.获得dtype(元素类型)和shape(数组维度)属性:arr.dtype和arr.shape 5.创建数组时显示说明类型:np.array(list, dtype=“type”) (2)创建特殊数组 1.创建全0数组函数 np.zeros((5,6)):创建指定长度或形状的全0数组。 np.zeros_like(a):创建与a对象相同尺寸的全0数组。a可以是列表

python数组和矩阵使用总结

允我心安 提交于 2019-11-29 14:43:08
python数组和矩阵使用总结 1、数组和矩阵常见用法 Python 使用NumPy包完成了对N-维数组的快速便捷操作。使用这个包,需要导入numpy。 SciPy包以NumPy包为基础,大大的扩展了numpy的能力。因此只要导入了scipy,不必在单独导入numpy了!为了使用的方便,scipy包在最外层名字空间中包括了所有的numpy内容。 本文还是区分numpy中实现的和scipy中实现的。 以下默认已经:import numpy as np 以及 impor scipy as sp numpy的基本类型是 多维数组 ,把matrix看做是array的子类。 1.建立矩阵 a1=np.array([1,2,3],dtype=int) #建立一个一维数组,数据类型是int。也可以不指定数据类型,使用默认。几乎所有的数组建立函数都可以指定数据类型,即dtype的取值。 a2=np.array([[1,2,3],[2,3,4]]) #建立一个二维数组。此处和MATLAB的二维数组(矩阵)的建立有很大差别。 同样,numpy中也有很多内置的特殊矩阵: b1=np.zeros((2,3)) #生成一个2行3列的全0矩阵。注意,参数是一个tuple:(2,3),所以有两个括号。完整的形式为:zeros(shape,dtype=)。相同的结构,有 ones() 建立全1矩阵。 empty(

python-数据分析模块numpy-pandas

爱⌒轻易说出口 提交于 2019-11-29 11:47:38
目录 numpy 模块 创建矩阵方法: 获取矩阵的行列数 切割矩阵 矩阵元素替换 矩阵的合并 通过函数创建矩阵 矩阵的运算 pandas模块 series (一维列表) DataFrame DataFrame属性 DataFrame取值 读取CSV文件 处理丢失数据 numpy 模块 numpy属于第三方库,需要下载安装。 numpy库有两个作用: 区别于list列表,提供了数组操作、数组运算、以及统计分布和简单的数学模型; 计算速度快 创建矩阵方法: import numpy as np #np是约定俗称将numpy简写 np.array() # 创建矩阵 一维矩阵 一维矩阵就相当于列表 arr =np.array([1,2,3]) print(arr) [1 2 3] 二维矩阵 arr = np.array([[1,2,3],[1,2,3]]) print(arr) [[1 2 3] [1 2 3]] 三维矩阵 arr = np.array([[[1,2,3],[1,2,3]],[[1,2,3],[1,2,3]]]) print(arr) [[[1 2 3] [1 2 3]] [[1 2 3] [1 2 3]]] 获取矩阵的行列数 arr = np.array([[12,23,4],[12,3,4]]) print(arr) [[12 23 4] [12 3 4]] print

机器学习中的线性代数

◇◆丶佛笑我妖孽 提交于 2019-11-29 10:56:49
第二章 机器学习中的线性代数知识 线性代数作为数学中的一个重要的分支,广发应用在科学与工程中。掌握好线性代数对于理解和从事机器学习算法相关的工作是很有必要的,尤其是对于深度学习而言。因此,在开始介绍深度学习之前,先集中探讨一些必备的线性代数知识。 2.1 标量,向量,矩阵和张量 标量(scalar) :一个标量就是一个单独的数。用斜体表示标量,如 s ∈ R //--> . 向量(vector) :一个向量是一列数,我们用粗体的小写名称表示向量。比如 x //--> ,将向量 x //--> 写成方括号包含的纵柱: x = ⎡ ⎣ ⎢ ⎢ ⎢ ⎢ x 1 x 2 ⋮ x n ⎤ ⎦ ⎥ ⎥ ⎥ ⎥ //--> 矩阵(matrix) :矩阵是二维数组,我们通常赋予矩阵粗体大写变量名称,比如 A ​ //--> 。如果一个矩阵高度是 m ​ //--> ,宽度是 n ​ //--> ,那么说 A ∈ R m × n ​ //--> 。一个矩阵可以表示如下: A = [ x 11 x 21 x 12 x 22 ] //--> 张量(tensor) :某些情况下,我们会讨论不止维坐标的数组。如果一组数组中的元素分布在若干维坐标的规则网络中,就将其称为张量。用 A ​ //--> 表示,如张量中坐标为 ( i , j , k ) ​ //--> 的元素记作 A i , j , k ​ //-

Faster RCNN(tensorflow)代码详解

不羁的心 提交于 2019-11-28 22:22:38
本文结合CVPR 2018论文 "Structure Inference Net: Object Detection Using Scene-Level Context and Instance-Level Relationships" ,详细解析Faster RCNN(tensorflow版本)代码,以及该论文中的一些操作步骤。 Faster RCNN整个的流程就是使用VGG等网络提取全图的feature map以及使用RPN网络预测一些object proposal(物体bbox的形式),使用ROI Pooling操作,提取出每个物体的特征图,然后输入到两层全连接神经网络进行物体类别以及bbox坐标的预测,抽象版的流程图可以看下面两幅图。 为了更清楚的体现代码中的结构,按照代码中的流程绘制了下面这张图:(图太大截图不好看,可使用链接下载。) 下面分析代码是根据一次典型的实验的执行顺序来分析的,这样比较方便理解。首先贴出跑一次Faster RCNN的典型参数配置: 'DEDUP_BOXES': 0.0625, 'EPS': 1e-14, 'EXP_DIR': 'faster_rcnn_end2end', 'GPU_ID': 0, 'IS_MULTISCALE': False, 'MATLAB': 'matlab', 'MODELS_DIR': 'XXX/SIN/models

Python的Numpy入门基础2

孤街浪徒 提交于 2019-11-28 20:16:18
NumPy作为Python的常用库,主要实现数组的计算和分析。 上回书说到:NumPy数组创建、索引、切片、转置的定义和注意事项; 顺其自然,就涉及到矩阵的运算: A. 数学函数 :针对数组和元素的通用函数,包含单个数组的一元函数:开方、指数、取整、判断NaN等;也包含多个数组的二元函数:加、减、相乘、整除、大小比较等;还有比较特殊的矩阵计算:点乘。 一元函数: np.sqrt( ) ## 开方 np.exp( ) ## 指数e^x np.abs( )、np.fabs( ) ## 取绝对值、快速绝对值(fast abs) np.rint( ) ## 四舍五入取整 np.ceil(arr)、np.floor(arr) ## 取 ≥ arr 得最小整数;取 ≤arr 得最大整数。 np.isnan( ) ## 返回不是数字(NaN)的 布尔型数组 decimal,integer = np.modf(arr) ## 将 arr 的小数部分、整数部分分开,分别赋值给新变量。 一元函数:针对矩阵的 行列 的数值计算; arr.mean(axis=1) ## 输出 每一 行 的均值 ; (可以增加 axis 参数,axis可以省略 ) arr.sum(0) ## 输出 每一 列 的和 arr.cumsum(0) ## 保持矩阵的相同维度, 在每一 列 的原始位置,输出中间步骤 的 累 加值

【python实用编程之简单矩阵计算器实现】GUI编程

人盡茶涼 提交于 2019-11-28 19:51:31
以下代码是作者闲暇时所作,对GUI界面编程有想法的朋友欢迎与作者交流 以下是一个简单的矩阵计算器实现的代码: #coding=gbk from tkinter import Tk , Menu , messagebox , Text , END from re import match , findall from numpy . linalg import inv , solve from numpy import zeros , array , dot from os . path import exists def Show_Info ( ) : if exists ( "注意事项.txt" ) : pass else : #下面就是在文本中输入的内容 f = open ( "注意事项.txt" , 'x+' ) f . write ( "本exe文件有以下基本功能:\n" ) f . write ( "1.求可逆矩阵,注意事项:\n" ) f . write ( "1.求可逆矩阵,注意事项:\n" ) f . write ( "求可逆矩阵只需要输入一个矩阵就好,输入示例\n" ) f . write ( "[1 2 3\n" ) f . write ( "1 2 3\n" ) f . write ( "1 2 3]\n" ) f . write (

Python - 实现矩阵转置

心不动则不痛 提交于 2019-11-28 19:18:04
有个朋友提出了一个问题:手头上现在有一个二维列表,比如[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]],现在要把该二维列表变成为[[1, 4, 7, 10], [2, 5, 8, 11], [3, 6, 9, 12]]。 其实不动脑筋的话,用二重循环很容易写出来: #! /usr/bin/env python3 # -*- coding:utf-8 -*- # Author : mayi # Blog : http://www.cnblogs.com/mayi0312/ # Date : 2019/4/26 # Name : test01 # Software : PyCharm # Note : 用于实现实现矩阵(二重列表)转置 def trans(l): a = [[] for i in l[0]] for i in l: for j in range(len(i)): a[j].append(i[j]) return a # 主函数 def main(): l1 = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]] l2 = trans(l1) print(l1) # [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]] print(l2) #