python矩阵

python基于二维数据矩阵随机生成图像文件

时间秒杀一切 提交于 2019-12-07 22:22:59
今天,遇上一个需求就是根据数据生成图像,当然不仅仅是这么简单,但是突然觉得很好玩,就简单实验了一下,随机的生成二维的数据矩阵,然后使用这个随机矩阵的数据来生成随机的图像,仅仅是好玩,下面是具体的实现: def random_generate_pic(num=50): ''' 随机生成图片 ''' data_list=[] for i in range(num): one_list=[] for j in range(num): one_list.append(random.uniform(0,255)) data_list.append(one_list) data_list=np.asarray(data_list) pic=Image.fromarray(data_list.astype(np.uint8)) pic.save('random_generate_pic.png') 结果如下: 来源: CSDN 作者: Together_CZ 链接: https://blog.csdn.net/Together_CZ/article/details/79720098

快速生成一个二维矩阵Python

拈花ヽ惹草 提交于 2019-12-07 22:22:01
简述 网上方法有很多种。 这里就先记录下,一般人都想不到的一种来试试看~ import numpy as np T = np .arange (count_h) + np .arange (count_t)[:, np .newaxis ] print(T .shape ) 输出结果是: count_h: 100 count_t: 5400 ( 5400 , 100 ) 关键代码: T = np .arange (count_h) + np .arange (count_t)[:, np .newaxis ] 关于这个解释,是用到我之前写过的一篇快速生成希尔伯特矩阵的方法 一行代码生成希尔伯特矩阵(Python)矩阵迅速扩展操作 点击就可以访问了~ 来源: CSDN 作者: 肥宅_Sean 链接: https://blog.csdn.net/a19990412/article/details/82712234

Python中生成并绘制混淆矩阵(confusion matrix)

时光怂恿深爱的人放手 提交于 2019-12-07 22:21:46
在机器学习中经常会用到混淆矩阵(confusion matrix),不了解的同学请参考这篇博文: ML01 机器学习后利用混淆矩阵Confusion matrix 进行结果分析 本文参考: 使用python绘制混淆矩阵(confusion_matrix) 首先import一些必要的库: from sklearn.metrics import confusion_matrix # 生成混淆矩阵函数 import matplotlib.pyplot as plt # 绘图库 import numpy as np import tensorflow as tf 然后定义绘制混淆矩阵函数: def plot_confusion_matrix(cm, labels_name, title): cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis] # 归一化 plt.imshow(cm, interpolation='nearest') # 在特定的窗口上显示图像 plt.title(title) # 图像标题 plt.colorbar() num_local = np.array(range(len(labels_name))) plt.xticks(num_local, labels_name, rotation=90) #

python之numpy库学习常用函数(矩阵索引数据)

∥☆過路亽.° 提交于 2019-12-07 22:20:35
import numpy as np # 索引数据 # 一维向量 n5 0 = np.arange( 50 ) print (n5 0 ) print ( '一维向量取一个数:' ,n5 0 [ 1 ]) print ( '一维向量取一组数据(包头不包尾):' ,n5 0 [ 1 : 9 ]) print ( '一维向量取这个索引之后所有的数据:' ,n5 0 [ 1 :]) print ( '一维向量取这个索引之前所有的数据:' ,n5 0 [: 7 ]) print ( '一维向量从尾部按索引取数:' ,n5 0 [- 3 :- 1 ]) # 二维矩阵 n51 0 = n5 0 .reshape( 5 , 10 ) print (n51 0 ) print ( '二维矩阵取一行:' ,n51 0 [ 1 ]) print ( '二维矩阵取一列:' ,n51 0 [:, 1 ]) print ( '二维矩阵取行范围数据(包头不包尾):\n' ,n51 0 [ 1 : 3 ]) print ( '二维矩阵取列范围数据(包头不包尾):\n' ,n51 0 [:, 1 : 3 ]) print ( '二维矩阵取具体某个值:' ,n51 0 [ 1 , 1 ]) print ( '二维矩阵取行列范围数据(包头不包尾):\n' ,n51 0 [ 0 : 2 , 1 : 4 ]) #

python scipy 稀疏矩阵详解

核能气质少年 提交于 2019-12-07 22:20:15
文章目录 稀疏矩阵格式 coo_matrix csr_matrix csc_matrix lil_matrix dok_matrix dia_matrix bsr_matrix 实用函数 经验总结 稀疏矩阵格式 coo_matrix    coo_matrix 是最简单的稀疏矩阵存储方式,采用三元组 (row, col, data) (或称为 ijv format )的形式来存储矩阵中非零元素的信息。在实际使用中,一般 coo_matrix 用来创建矩阵,因为 coo_matrix 无法对矩阵的元素进行增删改操作;创建成功之后可以转化成其他格式的稀疏矩阵(如 csr_matrix 、 csc_matrix )进行转置、矩阵乘法等操作。 ​ coo_matrix 可以通过四种方式实例化,除了可以通过 coo_matrix(D) , D代表密集矩阵; coo_matrix(S) , S代表其他类型稀疏矩阵或者 coo_matrix((M, N), [dtype]) 构建一个shape为M*N的空矩阵,默认数据类型是 d ,还可以通过 (row, col, data) 三元组初始化: >> > import numpy as np >> > from scipy . sparse import coo_matrix >> > _row = np . array ( [ 0 , 3 , 1

Python矩阵逆转与转置

本秂侑毒 提交于 2019-12-06 15:12:22
numpy实现 import numpy as np np.transpose([list]) # 矩阵转置 np.transpose([list]).tolist() # 矩阵转list >>> import numpy as np >>> np.transpose([[1, 2, 3], [1, 2, 3], [1, 2, 3]]) array([[1, 1, 1], [2, 2, 2], [3, 3, 3]]) >>> np.transpose([[1, 2, 3], [1, 2, 3], [1, 2, 3]]).tolist() [[1, 1, 1], [2, 2, 2], [3, 3, 3]] 矩阵转置 矩阵的转置就是从行变成列, 列变成行 用zip将一系列可迭代对象中的元素打包为元组,之后将这些元组放置在列表中,两步加起来等价于行列转置。 # 矩阵的转置 def transpose(list1): return [list(row) for row in zip(*list1)] list1 = [[1, 4], [2, 5], [3, 6]] print(transpose(list1)) # [[1, 2, 3], [4, 5, 6]] # 矩阵逆转 def invert(list1): return [row[::-1] for row in list1]

奇异值与奇异向量

依然范特西╮ 提交于 2019-12-06 14:33:49
定义 特征值分解是求解方阵的特征,对于非方阵而言可以通过奇异值分解描述矩阵的特征。 对于矩阵A为m*n的矩阵,可以分解成如下形式: A是一个m*n的矩阵,那么得到的U是一个m * m的方阵(里面的向量是正交的,称为左奇异向量),Σ是一个m * n的矩阵(除了对角线的元素外,其它都是0,对角线上的元素称为奇异值),VT是一个n * n的矩阵(里面的向量也是正交的,称为右奇异向量)。 右奇异向量求解 矩阵A左乘转置AT,将会得到一个方阵(n*n),通过该方阵求特征值和特征向量,该特征向量即A的右奇异向量。 上面的Vi构成的矩阵即A的右奇异矩阵。 右奇异向量和奇异值的求解 根据上面得到的特征值λ,计算奇异值σ,以及左奇异向量u: python代码实现 dataA = np.array([[1, 1], [1, 1], [0, 0]]) lvecs, vals, rvecs = np.linalg.svd(dataA) 来源: https://my.oschina.net/u/4228078/blog/3137876

特征值与特征向量

放肆的年华 提交于 2019-12-06 13:52:17
特征值分解 如果一个向量v是方阵A的特征向量,可以表示成如下形式: 其中λ称为特征向量v对应的特征值,一个矩阵的一组特征向量是一组正交向量。 需要注意的是:只有方阵才能进行特征分解。 特征值分解是将一个矩阵分解成下面的形式: 其中Q是这个矩阵A的特征向量组成的矩阵,Σ是一个对角阵,每一个对角线上的元素就是一个特征值。 代码实现 python: //方阵A dataA = np.array([[0.00178, -0.00296, 0.000427], [-0.00296, 0.00704, -0.00093], [0.00043, -0.00093, 0.000197]]) //求特征值和特征向量 eigVals, eigVectors = np.linalg.eig(dataA) //定义特征值的对角阵 smat = np.zeros((3, 3)) smat = np.diag(eigVals) //根据特征值和特征向量重新计算A = QΣQ(-1) result = np.dot(eigVectors, np.dot(smat, np.linalg.inv(eigVectors))) print(result) print(dataA) //对比两个矩阵值是否相同 print(np.allclose(dataA, result)) 来源: https://my.oschina

特征值与特征向量

北战南征 提交于 2019-12-06 07:11:40
特征值分解 如果一个向量v是方阵A的特征向量,可以表示成如下形式: 其中λ称为特征向量v对应的特征值,一个矩阵的一组特征向量是一组正交向量。 需要注意的是:只有方阵才能进行特征分解。 特征值分解是将一个矩阵分解成下面的形式: 其中Q是这个矩阵A的特征向量组成的矩阵,Σ是一个对角阵,每一个对角线上的元素就是一个特征值。 特征值的性质 设n阶矩阵A=(aij) 的特征值为λ1,λ2,...λn λ1+λ2+...+λn = a11+ a22+…+ann,trail(A)=特征值的和; λ1λ2… λn =|A|,特征值的乘积=A的行列式; 如果A是实对称矩阵,则特征向量两两正交,任意两个向量的叉积(np.cross)等于第三个特征向量; 如果A是实对称矩阵,则特征向量构成的矩阵Q有:Q的转置等于Q的逆,即 Q.T = np.linalg.inv(Q); 如果A是实对称矩阵,则特征向量构成的矩阵Q单位正交阵,即np.dot(Q, Q.T) = E; 代码实现 python: # 方阵A 此处为实对称矩阵 dataA = np.array([[0.00178, -0.00296, 0.000427], [-0.00296, 0.00704, -0.00093], [0.00043, -0.00093, 0.000197]]) # 求特征值和特征向量 #