python矩阵

【转】奇异值分解(SVD)

妖精的绣舞 提交于 2019-11-29 11:15:44
转载:http://redstonewill.com/1529/ 普通方阵的矩阵分解(EVD) 我们知道如果一个矩阵 A 是方阵,即行列维度相同(mxm),一般来说可以对 A 进行特征分解: 其中,U 的列向量是 A 的特征向量,Λ 是对角矩阵,Λ 对角元素是对应特征向量的特征值。 举个简单的例子,例如方阵 A 为: 那么对其进行特征分解,相应的 Python 代码为: 1 import numpy as np 2 3 A = np.array([[2,2],[1,2]]) 4 lamda, U = np.linalg.eig(A) # 特征向量和特征值 5 print('方阵 A', A) 6 print('特征值 lamda', lamda) 7 print('特征向量 U', U) 8 9 # 输出 10 # 方阵 A [[2 2] 11 # [1 2]] 12 # 特征值 lamda [3.41421356 0.58578644] 13 # 特征向量 U [[ 0.81649658 -0.81649658] 14 # [ 0.57735027 0.57735027]] 特征分解就是把 A 拆分,如下所示: 其中,特征值 λ1=3.41421356,对应的特征向量 u1=[0.81649658 0.57735027];特征值 λ2=0.58578644,对应的特征向量 u2=

Python 的稀疏矩阵

六月ゝ 毕业季﹏ 提交于 2019-11-29 06:23:49
  什么是稀疏矩阵   简单的说,如果一个矩阵中大部分元素为0,就被称为稀疏矩阵。   对于稀疏矩阵而言,实际存储的数据项很少。如果在计算机中采用传统的二维数组(Python中用二维列表)来存储稀疏矩阵,就会浪费大量的内存空间来存储0。比如一个10000 X 10000的稀疏矩阵,只有一个元素非0,若采用传统的存储技术,将浪费太多的内存来存储无意义的0。   稀疏矩阵的存储   对于稀疏矩阵,我们只需要记住矩阵中非0元素的位置和值、以及系数矩阵的大小(行数和列数)这些有用信息即可。也就是说,我们可以用一个包含3列的二维数组存储稀疏矩阵中的非0项,记录非0项的所在行、所在列和值信息以及记录稀疏矩阵行数和列数信息。   例如对于下面的3X3稀疏矩阵:   0  0  0   0  0  0   3  0  7   我们用下面的压缩矩阵来存储稀疏矩阵:   3   3  2   2  0  3   2  2  7   上面的压缩矩阵中,第0行(也就是标黄的部分)存储稀疏矩阵的行数(3)、列数(3)和非0项数据的个数(2)。   从第1行开始,存储非0项所在的行数、所在的列数和值。每一行存储一个非0项的信息。   示例题目   题目描述   输入一个稀疏矩阵,打印稀疏矩阵和压缩后的结果。   输入/输出描述   输入描述:   输入矩阵的行数和列数,在输入每一个位置对应的值。  

Python zeros(r, c)和ones(r, c)和eye(n) 生成特殊矩阵

自古美人都是妖i 提交于 2019-11-29 00:41:23
功能: 类型:numpy.ndarray zeros(r, c)生成指定维度r×c的0矩阵。 ones(r, c)生成指定维度r×c的1矩阵。 eye(n)生成指定维度n×n的单位矩阵。 示例: 生成一个3*2的全0矩阵 myMat1=np.zeros((3,2)) print('zeros = \n',myMat1) # 运行结果为 # zeros = # [[0. 0.] # [0. 0.] # [0. 0.]] 生成一个2*3的全0矩阵 myMat2=np.ones((2,3)) print('ones = \n',myMat2) # 运行结果为 # ones = # [[1. 1. 1.] # [1. 1. 1.]] 来源: https://blog.csdn.net/qq_41683065/article/details/100164163

python Numpy中tile函数使用说明

偶尔善良 提交于 2019-11-29 00:38:29
numpy.tile(A,reps) 函数原型:numpy.tile(A,reps) #简单理解是此函数将A进行重复输出其中A和reps都是array_like的参数,A可以是: array,list,tuple,dict,matrix 以及基本数据类型 int,string,float 以及bool类型 ,reps的类型可以是tuple,list,dict,array,int,bool,但不可以是float,string,matrix类 再啰嗦一句,numpy.tile(A,reps)返回的是矩阵 ndarray <class ‘numpy.ndarray’> 请看例子: import numpy as np #Numpy的 tile() 函数,就是将原矩阵横向、纵向地复制。 # tile 是瓷砖的意思,顾名思义,这个函数就是把数组像瓷砖一样铺展开来。 #设计一个简单的矩阵 ndarray = np.array(list(range(1,4))) print(ndarray)#[1 2 3] ndarray1 = np.tile(ndarray,(2,3)) #tile就像瓷砖一样将第一个参数作为一块瓷砖,铺成 2行乘以3列的矩阵 ndarray2 = np.tile(ndarray1,(2,3)) #以上一个为瓷砖,继续铺成 2行乘以3列的矩阵 print(ndarray)

Leetcode算法——59、螺旋矩阵II(square matrix II)

泪湿孤枕 提交于 2019-11-29 00:13:32
给定一个正整数 n,要求生成一个方阵,里面的元素为1到n^2按照螺旋顺序排列。 示例: Input: 3 Output: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ] 思路 可以参考 Leetcode算法——54、螺旋矩阵(spiral matrix) ,不同之处在于,54 题是给定一个矩阵,求螺旋顺序的序列;本题是给定一个序列,要求按螺旋顺序生成一个矩阵。 递归法: 1、初始化一个n*n矩阵 2、先按照顺时针顺序,对最外圈进行赋值。 最外圈的顺时针顺序为: 1、最上面一行,从左到右 2、最右面一列,从上到下 3、最下面一行,从右到左 4、最左面一列,从下到上 3、然后,使用递归法,处理第二圈、第三圈等,直到矩阵最中间的一圈也被赋值完毕(这也是递归结束条件)。 python实现 def generateMatrix ( n ) : """ :type n: int :rtype: List[List[int]] 递归法。 """ board = [ [ 0 for i in range ( n ) ] for i in range ( n ) ] def generate ( k , nextvalue ) : ''' 生成第k个外圈以及内部所有元素。 ''' nonlocal board # 计算最外圈的两行两列位置 minr = k - 1

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 数据科学-Numpy

谁说我不能喝 提交于 2019-11-28 04:50:48
NumPy Numpy :提供了一个在Python中做科学计算的基础库,重在数值计算,主要用于多维数组(矩阵)处理的库。用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多。本身是由C语言开发,是个很基础的扩展,Python其余的科学计算扩展大部分都是以此为基础。 高性能科学计算和数据分析的基础包 ndarray,多维数组(矩阵),具有矢量运算能力,快速、节省空间 矩阵运算,无需循环,可完成类似Matlab中的矢量运算 线性代数、随机数生成 使用以下语句导入 Numpy 库: import numpy as np NumPy 数组 创建数组 >>> a = np.array([1,2,3]) >>> b = np.array([(1.5,2,3), (4,5,6)], dtype = float) >>> c = np.array([[(1.5,2,3), (4,5,6)], [(3,2,1), (4,5,6)]], dtype = float) 初始化占位符 >>> np.zeros((3,4))# 创建值为0数组 >>> np.ones((2,3,4),dtype=np.int16)# 创建值为1数组 >>> d = np.arange(10,25,5)# 创建均匀间隔的数组(步进值) >>> np.linspace(0,2,9)# 创建均匀间隔的数组(样本数)

机器学习之ndarray笔记

删除回忆录丶 提交于 2019-11-27 22:15:20
Numpy的介绍 1. Ndarray:N-dimensional array, N维数组 2. 一种由相同类型的元素组成的多维数组,元素数量是事先指定好的 例:建立Ndarray多维数组 arr = np.array( [ [1,2,3,4], [2,3,4,5] ]) 这是一个二维数组arr.ndim为2 这个数组的形状arr.shape为(2, 4)即2行4列 这个数组的数据类型arr.dtype为int32 3. 元素的数据类型由dtype(data-type)对象来指定,每个ndarray只有一种dtype类型 例: np.array(['Python','cctv','ibeifeng','hello world'],dtype='|S4') 输出结果array([b'Pyth', b'cctv', b'ibei', b'hell'], dtype='|S4') 其中S4中的S表示字符串型,4表示每个字符串长度为4,所以输出结果每个数组只有4个字符 arr3 = np.array(['1','2','3','4'],dtype='int') # 表明arr3为整型 # 输出array([1, 2, 3, 4]) arr3 = np.array(['1','2','3','4'],dtype='float') # 表明arr3为浮点型 # 输出array([1., 2.,

day18学习整理-Python模块

孤街醉人 提交于 2019-11-27 21:25:32
目录 2019/08/16 学习整理 函数进阶(模块) numpy模块 创建矩阵(掌握) 获取矩阵的行列数(掌握) 切割矩阵(掌握) 矩阵元素替换(掌握) 矩阵的合并(熟悉) 通过函数创建矩阵(掌握) arange linspace/logspace zeros/ones/eye/empty fromstring/fromfunction(了解) 矩阵的运算(掌握) 普通矩阵运算 常用矩阵运算函数(了解) 矩阵的点乘(掌握) 矩阵的转置(掌握) 矩阵的逆(掌握) 矩阵其他操作(熟悉) 最大最小值 平均值 方差 标准差 中位数 矩阵求和 累加和 numpy.random生成随机数(熟悉) pandas模块 Series(熟悉) DataFrame(掌握) DataFrame属性(掌握) DataFrame取值(掌握) loc/iloc 使用逻辑判断取值 DataFrame值替换(掌握) 读取CSV文件(掌握) 处理丢失数据(掌握) 导入导出数据(掌握) 合并数据(掌握) 读取sql语句(熟悉) matplotlib模块 条形图(掌握) 直方图(掌握) 折线图(掌握) 散点图+直线图(掌握) 2019/08/16 学习整理 函数进阶(模块) 建议学习的时候去看官方文档学习 numpy模块 numpy官方文档: https://docs.scipy.org/doc/numpy