首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

盘一盘 Python 特别篇 20 - SciPy 稀疏矩阵

‍‍‍‍‍‍‍ 在实际使用中,用 coo_matrix() 语法来创建矩阵,注意产出矩阵的格式是COOrdinate。...这种格式要求矩阵元按行顺序存储,每一行中的元素可以乱序存储。那么对于每一行就只需要用一个指针表示该行元素的起始位置即可。...使用两个嵌套列表存储稀疏矩阵: data 保存每行中的非零元素的值 rows 保存每行非零元素所在的列号 (列号是按顺序排的)。...稀疏矩阵使用 offsets 和 data 两个矩阵来表示,其中offsets 表示 data 中每一行数据在原始稀疏矩阵中的对角线位置 k: k > 0, 对角线往右上方移动 k 个单位 k 的结果,但是用 diags 方法代码最简洁些。但是如果对角线上的值都不一样,那么只能用 spdiags 方法,原因是它的参数是数组,而不是元素。

2.1K30

对角矩阵单位矩阵_矩阵乘单位矩阵等于

.) triu(m, k=0) m:表示一个矩阵 k:表示对角线的起始位置(k取值默认为0) ''' #k=0表示正常的上三角矩阵 b = np.triu(a,0) print(b) ''' [[1 2...:处理对角线函数 numpy.diag()返回一个矩阵的对角线元素 numpy.diag(v,k=0) 返回:以一维数组的形式返回方阵的对角线(或非对角线)元素 两次使用:np.diag() 将数组类型转化为矩阵...__class__) #numpy.matrix'> print("-----\n") ''' 使用一次np.diag():二维数组提取出对角线上的元素返回一维数组 ''' #k=0 正常的对角线的位置...j) #[4 8] print("-----\n") ''' 使用两次np.diag() 获得二维矩阵的对角矩阵 先将主对角线的元素提取出来,形成一维数组 再将一维数组中的每个元素作为主对角线上面的元素形成二维数组...print(k.ndim) #2 print("-----\n") ''' 一维数组 ''' #一维数组将数组中的每个元素作为对角线上元素形成二维数组; l = np.array([1,2,3,4])

1.6K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    深度学习中的数学(二)——线性代数

    对角线上的元素可以为0或其他值。单位矩阵:它是个方阵,从左上角到右下角的对角线(称为主对角线)上的元素均为1。除此以外全都为0。零矩阵:零矩阵即所有元素皆为0的矩阵。...一矩阵:一矩阵即所有元素皆为1的矩阵。对称矩阵:是指以主对角线为对称轴,各元素对应相等的矩阵。...稀疏矩阵:在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵;与之相反,若非0元素数目占大多数时,则称该矩阵为稠密矩阵。...A和B就是相似矩阵。 如果P是正交阵(P的转置乘P=单位阵),得到的B就是斜对角阵,主对角线上的值就是A的特征值。 可以用此公式对角化一个矩阵。...print(v) # 3x2 分解为 3x3 3x2 2x2 三个矩阵 SVD分解的应用:降维(用前个非零奇异值对应的奇异向量表示矩阵的主要特征)、 压缩(要表示原来的大矩阵,我们只需要存三个较小的矩阵的即可

    84430

    Numpy归纳整理

    . like 创建 新数组,只分配内存空间但不填充任何值 eye、identity 创建一个正方的NXN单位矩阵(对角线为1,其余为0) 通用函数 通用函数(即ufunc)是一种对ndarray中的数据执行元素级运算的函数...、isinf 分别返回一个表示“哪些元素是有穷的(非inf, 非NaN)”或“哪些元素是无穷的”的布尔型数组 CO5、cosh、sin、 sinh、 tan、tanh 普通型和双曲型三角函数 arccos...(x, y) 集合的差,即元素在x中且不在y中 setxor1d(x, y) 集合的对称差,即存在于一个数组中但不同时存在于两个数组中的元素 常用的numpy.linalg函数 线性代数函数 numpy.linalg...中有一组标准的矩阵分解运算以及诸如求逆和行列式之类的东西 函数 说明 diag 以一维数组的形式返回方阵的对角线(或非对角线)元素,或将一维组转换为方阵(非对角线元素为0) dot 矩阵乘法 trace...有计算对角线元素的和 det 计算矩阵行列式 eig 计算方阵的本征值和本征向量 inv 计算方阵的逆 pinv 计算矩阵的Moore-Penrose伪逆 qr 计算QR分解 svd 计算奇异值分解(

    1.2K20

    小孩都看得懂的 GAN

    根据上面动图可知,辨别器的任务是区分哪些图片是真实的,哪些图片是生成器产生的。 接下来我们用 Python 创建一个极简 GAN。 首先设置一个故事背景。...复习一下: 人脸:对角线上是深色,非对角线上是浅色 非人脸:任意四处都可能是深色或浅色 像素可以用 0 到 1 的数值来表示: 人脸:对角线上的数值大,非对角线上的数值小 非人脸:任意四处都可能是...该规则被已经分析多次了: 人脸:对角线上的数值大,非对角线上的数值小 非人脸:任意四处都可能是 0-1 之间的任意数值 ---- 现在来看生成过程。...回忆生成器的目的是生成人脸,即要保证最终 2*2 矩阵的对角线上的像素要大(用粗线表明),而非对角线上的像素要小(用细线表明)。...,非对角线上的数值小。

    52820

    小白的机器学习实战——向量,矩阵和数组 小白的机器学习实战——向量,矩阵和数组

    -2, -6]]) 对矩阵元素进行操作 # 创建一个方法:对每个元素加10 add_100 = lambda i: i + 10 # 在对numpy的数组进行操作时,我们应该尽量避免循环操作,尽可能利用矢量化函数来避免循环...6]]) # 由于稀疏矩阵中非零元素较少,零元素较多,因此可以采用只存储非零元素的方法来进行压缩存储。...# 另外对于很多元素为零的稀疏矩阵,仅存储非零元素可使矩阵操作效率更高,速度更快。 # python不能自动创建稀疏矩阵,所以要用scipy中特殊的命令来得到稀疏矩阵。...A的主对角线(从左上方至右下方的对角线)上各个元素的总和被称为矩阵A的迹(或迹数),一般记作tr(A)。...# 先获得矩阵的对角线 matrix.diagonal() >>> array([1, 5, 9]) # 对角线求和就是迹 matrix.diagonal().sum() >>> 15 # 秩:在线性代数中

    1K40

    炒鸡简单,带你快速撸一遍Numpy代码!

    NumPy 数组中的元素都需要具有相同的数据类型,因此在存储器中将具有相同的大小。...[0,1,1]) out:3 #更改某一元素,用 = 进行赋值和替换即可 a = np.arange(6) a[3] = 7 #先访问,再重新赋值 print(a) [0 1 2 7 4...默认k = 0,取主对角线; k = 1时,取主对角线上面1行的元素; k = -1时,取主对角线下面1行的元素。 思考:这个函数只能选择主对角线上的元素,那如果想要获取副对角线上的元素呢?...X[X > 10] #筛选数组X中大于10的数据 这里需要注意的是,当输入多个筛选条件时,&表示与,|表示或,~表示非。...这里的A就是“可广播”矩阵。 上面涉及到的乘法是元素对应相乘,也就是点乘,那矩阵的叉乘呢?可以了解下numpy.matmul函数。

    1.6K40

    炒鸡简单,带你快速撸一遍Numpy代码!

    NumPy 数组中的元素都需要具有相同的数据类型,因此在存储器中将具有相同的大小。...[0,1,1]) out:3 #更改某一元素,用 = 进行赋值和替换即可 a = np.arange(6) a[3] = 7 #先访问,再重新赋值 print(a) [0 1 2 7 4...默认k = 0,取主对角线; k = 1时,取主对角线上面1行的元素; k = -1时,取主对角线下面1行的元素。 思考:这个函数只能选择主对角线上的元素,那如果想要获取副对角线上的元素呢?...X[X > 10] #筛选数组X中大于10的数据 这里需要注意的是,当输入多个筛选条件时,&表示与,|表示或,~表示非。...这里的A就是“可广播”矩阵。 上面涉及到的乘法是元素对应相乘,也就是点乘,那矩阵的叉乘呢?可以了解下numpy.matmul函数。

    1.5K30

    Python NumPy迭代器协议与高效遍历

    但在以下场景中,高效遍历显得尤为重要: 大规模数组操作:直接使用 Python 循环遍历大规模 NumPy 数组效率低下。 多维数组处理:高维数据的逐元素操作需要更灵活的迭代工具。...基本迭代器协议 在 NumPy 中,数组是可迭代对象,可以直接使用 Python 的迭代协议进行操作。...实际案例:矩阵操作与优化 矩阵中标记特定值 在一个矩阵中,将所有大于 10 的元素标记为 1,其余标记为 0: # 创建示例矩阵 matrix = np.array([[5, 12, 8], [15,...:\n", matrix) 输出: 标记后的矩阵: [[0 1 0] [1 0 0]] 索引和修改矩阵中的元素 将矩阵中所有位于对角线上的元素加倍: # 创建示例矩阵 matrix = np.array...matrix[index] *= 2 print("对角线加倍后的矩阵:\n", matrix) 输出: 对角线加倍后的矩阵: [[ 2 2 3] [ 4 10 6]

    12610

    什么是语义分割_词法分析语法分析语义分析

    (那就对了…) 分析混淆矩阵的3个要点:(参考链接) ①矩阵对角线上的数字,为当前类别预测正确的类别数目;非对角线数字,预测都是错误的!...如:对角线数字5,含义为:预测值为狗,实际是狗的预测数目,即:预测正确(同理:数字4);非对角线数字1,含义为:预测值为猫,实际是狗的预测数目,即:预测错误。...比如:第2列,模型对猫(类别2)预测了1+4=5只(此时,不看预测对与错),再分析,第2列第1行非对角线元素,预测错误(预测值是猫,实际是狗),第2列第2行为对角元素,预测正确(预测值是猫,实际是猫),...=n**2) (np.bincount函数学习链接:numpy.bincount详解) 其作用是产生一行n * n个元素的向量,向量中的每个元素存储统计结果,假如该向量为d,则其中的d(i*n + j...下面继续引用大佬讲解,遵循:对角都对,横看真实,竖看预测 原则 表格分析注意小点: ①绿色表格中对角线元素上的数字即为该类别预测正确的像素点数目,非对角线元素都是预测错误的,拿最后一行的数字1为例,其含义即为有一个原本应属于类别

    1.3K20

    numpy总结

    numpy的功能: 提供数组的矢量化操作,所谓矢量化就是不用循环就能将运算符应用到数组中的每个元素中。...numpy.convolve()卷积,两个函数相乘,移动窗口均值可以用1/窗口长度组成的数组和原数组作为参数 numpy.linespace()返回一个元素值在指定范围均匀分布的数组...ndarray.prod计算所有元素的乘积 numpy.cov()计算两个数组之间的协方差矩阵 ndarray.trace计算矩阵的迹,即对角线元素之和 numpy.corrcoef...)创建矩阵,矩阵的行与行用分号隔开,也可以传入已有矩阵,但是不会创建副本 ....0),a)从a中抽取能被2整除的元素 np.nonzero(a)抽取非0元素 np.outer(a数组,b数组)a数组的元素*b数组行,生成二维数组 金融专用函数 np.fv()

    1.6K20

    python的numpy入门简介

    isnan 返回一个表示“哪些值是NaN(这不是一个数字)”的布尔型数组 isfinite, isinf 分别返回一个表示“哪些元素是有限的(非inf,非NaN)”或“哪些元素是 无穷的”的布尔型数组...NumPy的ndarray 快速的元素级数组函数 • 二元函数 I 类型 说明 add 将数组中对应的元素相加 subtract 从第一个数组中减去第二个数组中的元素 multiply 数组元素相乘 divide...in1d(x, y) 得到一个表述"x的元素是否包含于y"的布尔型数组 setdiff1d(x, y) 集合的差,即元素在x中且不在y中 setxor1d(x, y) 集合的异或,即存在于一个数组中但不同时存在于两个数组中的元素...函数  diag 以一维数组的形式返回方阵的对角线(或非对角线元素),获将一维数组转换 为方阵(非对角线元素为0)。...trace 计算对角线元素的和 det 计算矩阵行列式 eig 计算方阵的特征值和特征向量 inv 计算方阵的逆  #inv(mat)  # 矩阵求逆 pinv 计算矩阵的Moore-Penrose伪逆

    1.4K30

    Python AI 教学 | 主成分分析(PCA)原理及其应用

    可以直观地看到,协方差矩阵C是一个对称矩阵,Cij=Cji,对角线是各个特征的方差 因为矩阵是一个实对称矩阵,所以具备实对称的特征: 1) C的不同特征值对应的特征向量是正交的; 2) C的特征值都是实数...,特征向量都是实向量; 3) C可对角化,且相似对角阵上的元素即为矩阵本身特征值; 3、根据以上性质,我们可以得到个线性无关的非零特征向量e1,e2,......,en,这些特征向量构成的特征矩阵E=(e1 e2 ... en)满足: ? 上述的矩阵是一个对角矩阵,除了对角线有值,其他位置都是0。...对角线是方差,其他位置是协方差,协方差为0,代表着两个向量正交。 假设特征空间转换的过程可以表达为Z=XU,矩阵D代入该表达式可以得到: ? 也就是说U=E,U就是矩阵C特征向量所组成的矩阵。...矩阵D对角线上每个值就是矩阵C的特征值。 4、我们将D中的特征值按照从大到小,将特征向量从左到右进行排序,然后取其中前K个,经过压缩转换(Z=XU),就得到降维之后的数据矩阵Z: ?

    1.9K31

    python3-特征值,特征分解,SVD

    1.设A为n阶矩阵,若存在常数λ及n维非零向量x,使得Ax=λx,则称λ是矩阵A的特征值,x是A属于特征值λ的特征向量。...A的所有特征值的全体,叫做A的谱,记为λ(A) 2.特征分解(Eigendecomposition),又称谱分解(Spectral decomposition)是将矩阵分解为由其特征值和特征向量表示的矩阵之积的方法...其中Q是这个矩阵A的特征向量组成的矩阵,Σ是一个对角阵,每个对角线上的元素就是一个特征值。这里需要注意只有可对角化矩阵才可以作特征分解。...只有对角线上有非0元素的矩阵称为对角矩阵,或说若一个方阵除了主对角线上的元素外,其余元素都等于零,则称之为对角阵。 特征值分解是一个提取矩阵特征很不错的方法,但是它只是对方阵而言的 ? ? ? ?...import numpy as np x=np.mat(np.array([[1.,2.,3.],[4.,5.,6.],[7.,8.,9.]])) print(x) print(np.linalg.det

    1.6K21

    Python|Numpy的常用操作

    3)) # 创建单位矩阵 nd6 = np.eye(3) nd7 = np.identity(3) # 创建对角矩阵:主对角线之外的元素都为0 nd8 = np.diag((1, 2, 3, 4))...# 创建对称矩阵 X = np.mat([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) A = np.triu(X) # 用于提取主对角线元素 nd9 = A + A.T - np.diag...numpy中提供了arange函数使得我们可以通过循环的方式设置起始位置以及步长来生成数组。...04 矩阵的运算 numpy中的linalg模块中提供了很多矩阵运算的函数,主要的函数如下: diag():以一维数组的方式返回方阵的对角线元素 dot():矩阵乘法 trace():求矩阵的迹(对角线元素的和...numpy中提供的广播机制让我们能够对不同形状的矩阵进行运算,广播的兼容原则为: 对齐尾部维度 shape相等或者其中shape元素中有一个为1 ?

    1.4K20

    【NumPy高级运用】NumPy的Matrix与Broadcast高级运用以及IO操作

    Matrix高级运用 Matrix函数的作用是返回给定大小的标识矩阵。 单位矩阵是一个方阵。从左上角到右下角的对角线上的元素(称为主对角线)均为1,其他所有元素均为0。 !...此模块中的函数返回一个矩阵,而不是数组对象。 矩阵是行和列元素的矩形阵列。 矩阵中的元素可以是数字、符号或数学表达式。...以下是由6个数字元素组成的2行3列矩阵: 转置矩阵 在NumPy中,除了使用NumPy.transpose函数交换数组的维度外,还可以使用T属性。。...非关键字参数传递的数组将自动命名为arr_0、arr_1 Kwds:要保存的数组使用关键字名称。 NumPy数组的维数称为rank,rank是轴的数量,即数组的维数。...一维阵列的秩是1,二维阵列的秩为2,依此类推。 在NumPy中,每个线性阵列称为轴,即维度。例如,二维阵列等效于两个一维阵列,第一个一维阵列中的每个元素都是一维阵列。所以一维数组是NumPy中的轴。

    56820

    稀疏矩阵的压缩方法

    2.6.2 稀疏矩阵压缩 我们已经可以用Numpy中的二维数组表示矩阵或者Numpy中的np.mat()函数创建矩阵对象,这样就能够很方便地完成有关矩阵的各种运算。...最后,观察稀疏矩阵 ,第一行第一个非零元素之前共有 个非零元素;第二行的第一个非零元素之前共有 个非零元素,第三行的第一个非零元素之前共有 个非零元素;再记录矩阵中所有的非零数字个数...对分块稀疏矩阵按行压缩 coo_matrix 坐标格式的稀疏矩阵 csc_matrix 压缩系数矩阵 csr_matrix 按行压缩 dia_matrix 压缩对角线为非零元素的稀疏矩阵 dok_matrix...字典格式的稀疏矩阵 lil_matrix 基于行用列表保存稀疏矩阵的非零元素 下面以csr_matrix为例进行演示。...> 以上创建了一个用变量 m引用的被压缩过的矩阵,从输出信息可知,其中保存了 个元素,也就意味着对应的稀疏矩阵中都是零元素。

    5.2K20

    码农眼中的数学之~矩阵专栏(附Numpy讲解)

    ,剩下的你可以把值带进去验证一下” 2.2.矩阵的运算(含幂运算) 2.2.1.加、减 加减比较简单,就是对应元素相加减 (只有 行列都相同的矩阵才可以进行) 就不用麻烦的 LaTex一行行打了,咱们用更方便的...上三角矩阵 :主对角线以下都是零的方阵 下三角矩阵 :主对角线以上都是零的方阵 ?...性质(行列式后面会说) 上(下)三角矩阵的行列式为对角线元素相乘 上(下)三角矩阵乘以系数后也是上(下)三角矩阵 上(下)三角矩阵间的加减法和乘法运算的结果仍是上(下)三角矩阵 上(下)三角矩阵的逆矩阵也仍然是上...对角矩阵 :主对角线之外的元素皆为0的方阵 (单位矩阵属于对角矩阵中的一种) ?...单位矩阵 :单位矩阵是个方阵(行列相等),从左上角到右下角的对角线(称为主对角线)上的元素均为1。

    1.7K30

    文心一言 VS 讯飞星火 VS chatgpt (389)-- 算法导论25.1 2题

    下面是一个用 Go 语言实现的简单示例,它创建了一个矩阵并强制对角线元素为零: package main import( "fmt" ) // 设置矩阵的大小 const n =4 func main...修改后的矩阵对角线元素都被设置为零。这个简单的示例展示了如何初始化一个矩阵,并用 Go 语言将其对角线元素置零。...i][j]=0 }else{ // 可以根据需要填充非对角线元素 matrix[i][j]=1// 这里用1作为示例,你可以根据需求修改 } } } return matrix...下面是一个用Go语言编写的简单函数,它接受一个二维切片(表示矩阵)并确保对角线上的元素都是0:package mainimport"fmt"// 设置对角线元素为0func setDiagonalToZero...( n \times n ) 的矩阵,其中所有对角线元素都设置为0,其他元素设置为1。

    6620
    领券