矩阵

平面坐标变换 矩阵形式

最后都变了- 提交于 2019-12-07 22:24:32
转 http://learn.gxtc.edu.cn/NCourse/jxcamcad/cadcam/Mains/main11-2.htm 2.3.3 基本二维变换 基本二维变换有比例变换(Scaling)、旋转变换(Rotating)、错切变换(Shearing)和平移变换(Translating)。 1)比例变换 比例变换就是将平面上任意一点的横坐标放大或缩小S11倍,纵坐标放大或缩小S22倍,即 其中S称为比例变换矩阵。图2.24是比例变换的几个例子。图中(b)是S11=S22的情况,(C)是S11≠S21的情况 2)旋转变换 旋转变换就是将平面上任意一点绕原点旋转θ角,一般规定逆时针方向为正,顺时针方向为负。从图2.25可推出变换公式: 3)错切变换 在旋转变换矩阵中,非对角线元素有何几何意义?观察图2.26中的例子。变换矩阵中元素S21起作把图形沿X方向“错切”的作用,Y值越小,错切量越小。S12则有将图形向Y方向“错切”的作用,同样其作用的大小与X值成正比。 4)平移变换 平移交换指的是将平面上任意一点沿X方向移动C。,沿Y方向移动ty(图2.27),其变换公式为 由上式可见,平移交换不能直接用2X2矩阵来表示。下述齐次坐标变换矩阵则可解决这个问题。 注意:这句话关键(疑问点在于为什么二位转换需要3x3的矩阵) 2.3.4 齐次坐标 如把平面上的点P=[Xy

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生成二维矩阵的方法

别来无恙 提交于 2019-12-07 22:20:51
1、直接用列表生成m行n列的矩阵 m,n = map(int,input().split()) matrix = [[0]*(m)]*(n) 输出为: 这种方式生成的矩阵存在一定的问题,比如,无法给特定位置的元素赋值,例如: matrix[1][1] = 9 输出为: 可见,第二列的元素全部被赋值为9了 2、采用numpy生成想要维度的矩阵 import numpy as np x,y = map(int,input().split()) a = np.ones((x+1,y+1)) 输出为: 上面的输出特别漂亮,一个完美的矩阵形式输出,下面我们试一下修改特定位置的元素值。 import numpy as np x,y = map(int,input().split()) a = np.ones((x+1,y+1)) a[1][1] = 9 print(a) 输出为: 可见,我们成功修改了第二行第二列的元素值,因此通过numpy生成的矩阵更具有可操作性。比如下面的操作: import numpy as np x,y = map(int,input().split()) a = np.ones((x+1,y+1)) for i in range(1,x+1): for j in range(1,y+1): a[i][j] = a[i-1][j] + a[i][j-1] print(a

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

C++二维数组名的再探索

♀尐吖头ヾ 提交于 2019-12-07 18:54:27
#include <iostream> int main() { int d2a[3][4] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; //输出 0,1,2,3,4,5,6,7,8,9,10,11 for (size_t i = 0; i < 3; i++) { for (size_t j = 0; j < 4; j++) { std::cout << d2a[i][j] << ","; } } //输出 0077FD04,0077FD04,0077FD14,0077FD24 //可见二维数组名是数据首地址,d2a[0],d2a[1],d2a[2]分别是第一行,第二行,第三行的首地址 std::cout << d2a << "," << d2a[0] << "," << d2a[1] << "," << d2a[2] << std::endl; //最直观的顺序输出所有元素的方式 //输出 0,1,2,3,4,5,6,7,8,9,10,11 int* pa = (int*)d2a; for (size_t i = 0; i < 12; i++) { std::cout << *(pa + i) << ","; } //最难理解的二维数组名当指针的输出方式 //输出 0,1,2,3,4,5,6,7,8,9,10,11 for (size

典型关联分析(CCA)原理总结

核能气质少年 提交于 2019-12-07 16:17:48
原文地址: https://www.cnblogs.com/pinard/p/6288716.html 典型关联分析(Canonical Correlation Analysis,以下简称CCA)是最常用的挖掘数据关联关系的算法之一。比如我们拿到两组数据,第一组是人身高和体重的数据,第二组是对应的跑步能力和跳远能力的数据。那么我们能不能说这两组数据是相关的呢?CCA可以帮助我们分析这个问题。 1. CCA概述     在数理统计里面,我们都知道相关系数这个概念。假设有两组一维的数据集X和Y,则相关系数 ρ ρ 的定义为: ρ ( X , Y ) = c o v ( X , Y ) D ( X )−−−−−√ D ( Y )−−−−−√ ρ(X,Y)=cov(X,Y)D(X)D(Y)     其中 c o v ( X , Y ) cov(X,Y) 是X和Y的协方差,而 D ( X ) , D ( Y ) D(X),D(Y) 分别是X和Y的方差。相关系数 ρ ρ 的取值为[-1,1],  ρ ρ 的绝对值越接近于1,则X和Y的线性相关性越高。越接近于0,则X和Y的线性相关性越低。     虽然相关系数可以很好的帮我们分析一维数据的相关性,但是对于高维数据就不能直接使用了。拿上面我们提到的,如果X是包括人身高和体重两个维度的数据,而Y是包括跑步能力和跳远能力两个维度的数据

典型关联分析(CCA)原理总结

不想你离开。 提交于 2019-12-07 16:16:52
原文地址: https://www.cnblogs.com/pinard/p/6288716.html 典型关联分析(Canonical Correlation Analysis,以下简称CCA)是最常用的挖掘数据关联关系的算法之一。比如我们拿到两组数据,第一组是人身高和体重的数据,第二组是对应的跑步能力和跳远能力的数据。那么我们能不能说这两组数据是相关的呢?CCA可以帮助我们分析这个问题。 1. CCA概述     在数理统计里面,我们都知道相关系数这个概念。假设有两组一维的数据集X和Y,则相关系数 ρ ρ 的定义为: ρ ( X , Y ) = c o v ( X , Y ) D ( X )−−−−−√ D ( Y )−−−−−√ ρ(X,Y)=cov(X,Y)D(X)D(Y)     其中 c o v ( X , Y ) cov(X,Y) 是X和Y的协方差,而 D ( X ) , D ( Y ) D(X),D(Y) 分别是X和Y的方差。相关系数 ρ ρ 的取值为[-1,1],  ρ ρ 的绝对值越接近于1,则X和Y的线性相关性越高。越接近于0,则X和Y的线性相关性越低。     虽然相关系数可以很好的帮我们分析一维数据的相关性,但是对于高维数据就不能直接使用了。拿上面我们提到的,如果X是包括人身高和体重两个维度的数据,而Y是包括跑步能力和跳远能力两个维度的数据