矩阵

2.二维数组中的查找

耗尽温柔 提交于 2020-02-27 18:29:25
题目: 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 我的解法: 暴力的两次循环: class Solution { public: bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) { for(int i = 0; i < matrix.size(); ++ i) { for(int j = 0; j < matrix[i].size(); ++ j) { if(matrix[i][j] == target) return true; } } return false; } }; 时间复杂度 为O(M*N) 非最优解。 空间复杂度为O(1) 解法摘录: 1. 本题解利用矩阵特点引入标志数,并通过标志数性质降低算法时间复杂度。 标志数引入: 此类矩阵中左下角和右上角元素有特殊性,称为标志数。 左下角元素: 为所在列最大元素

【33】卷积步长讲解(Strided convolutions)

本秂侑毒 提交于 2020-02-27 18:26:52
卷积步长(Strided convolutions) 卷积中的步幅是另一个构建卷积神经网络的基本操作,让我向你展示一个例子。 如果你想用3×3的过滤器卷积这个7×7的图像,和之前不同的是,我们把步幅设置成了2。你还和之前一样取左上方的3×3区域的元素的乘积,再加起来,最后结果为91。 只是之前我们移动蓝框的步长是1,现在移动的步长是2,我们让过滤器跳过2个步长,注意一下左上角,这个点移动到其后两格的点,跳过了一个位置。然后你还是将每个元素相乘并求和,你将会得到的结果是100。 现在我们继续,将蓝色框移动两个步长,你将会得到83的结果。当你移动到下一行的时候,你也是使用步长2而不是步长1,所以我们将蓝色框移动到这里: 注意到我们跳过了一个位置,得到69的结果,现在你继续移动两个步长,会得到91,127,最后一行分别是44,72,74。 所以在这个例子中,我们用3×3的矩阵卷积一个7×7的矩阵,得到一个3×3的输出。输入和输出的维度是由下面的公式决定的。如果你用一个f×f的过滤器卷积一个n×n的图像,你的padding为p,步幅为s,在这个例子中s=2,你会得到一个输出,因为现在你不是一次移动一个步子,而是一次移动s个步子,输出于是变为( (n+2p-f)/s+1) ×( (n+2p-f)/s+1) 在我们的这个例子里,n=7,p=0,f=3,s=2, (7+0-3)/2+1=3,即3

Python Numpy库中矩阵用法快速指南

谁都会走 提交于 2020-02-27 15:17:09
Python Numpy库中矩阵用法指南 矩阵是一个由m*n个数排成的m行n列的表称为m行n列的矩阵,简称为m*n矩阵。下面的矩阵是一个3*2(3乘2)矩阵,因为它有三行四列。 在数学的概念中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,最早来自于方程组的系数及常数所构成的方阵。这一概念由19世纪英国数学家凯利首先提出。矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中。 矩阵的运算是数值分析领域的重要问题。将矩阵分解为简单矩阵的组合可以在理论和实际应用上简化矩阵的运算。对一些应用广泛而形式特殊的矩阵,例如稀疏矩阵和准对角矩阵,有特定的快速运算算法。 文章目录 Python Numpy库中矩阵用法指南 Python列表生成矩阵 Numpy Array(数组) 矩阵运算 查看矩阵中的元素、行与列 矩阵的切片 Python列表生成矩阵 在Python中也有矩阵的概念,但是Python中没有矩阵这种的内置类型。但是我们可以将Python中的列表看做一个矩阵。例如: A = [[2,8], [-5,32], [0,8]] 我们可以把这个列表看做为是一个3行2列的矩阵。 接下来我们看一下如何使用嵌套列表。 A = [[1, 4, 5, 12], [-5, 8, 9, 0], [-6, 7, 11, 19]] print("A =", A) print("A[1]

剑指Offer65:矩阵中的路径(Java)

点点圈 提交于 2020-02-27 12:21:24
参考“我去个地方啊”的牛客解答: https://www.nowcoder.com/questionTerminal/c61c6999eecb4b8f88a98f66b273a3cc?f=discussion(注释很详尽 ) 参考“白马长枪儒雅将”的博客: https://blog.csdn.net/u012429555/article/details/90476001(思路解释的很清晰 ) 思路分析: 建立与matrix对应的boolean数组flag,用来标记这个matrix这位置是否已经来过. 遍历matrix的元素判断与str[k]是否相等, 当不相等或者flag同位置的元素是true,或者越界了返回false。 相等时flag同位置元素设为true,然后递归matrix这个位置上下左右四个元素能否和str[k+1]相等。 k==str.length-1返回true 题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。例如,在下面的3x4的矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后

Web前端之高斯模糊图片记

故事扮演 提交于 2020-02-27 04:58:11
题记 前端需求之高斯模糊图片 最近工作中有一个需求,客户提交图片,服务器根据图片生成内容,并将内容显示,要求高斯模糊处理用户的图片并作为作品展示的背景,类似于苹果设备上的高斯模糊背景。用户提交的图片分网络图片地址、终端设备上传两种。要求兼容各大浏览器。 解决方案一:CSS3滤镜 在CSS3 中规定了一个新的图形特效:filter ,可以对元素进行模糊、锐化或者元素变色。 filter 目的是用来调整图片、背景和边界的渲染。 在CSS3 中已经实现了filter 的一些预定义函数,MDN 中介绍如下: filter: url("filters.svg#filter-id"); filter: blur(5px); filter: brightness(0.4); filter: contrast(200%); filter: drop-shadow(16px 16px 20px blue); filter: grayscale(50%); filter: hue-rotate(90deg); filter: invert(75%); filter: opacity(25%); filter: saturate(30%); filter: sepia(60%); /* Apply multiple filters */ filter: contrast(175%) brightness

【Graph Embedding】GCN:天空飘来七个大字

匆匆过客 提交于 2020-02-27 04:00:21
今天学习的是阿姆斯特丹大学的同学于 2016 发表的一篇论文《Semi-supervised Classification with Graph Convolutional Networks》,目前有 2800 多引用。 在 2013 年在之前,NetWork Representation 有两种主流的方式,包括矩阵分解和 NetWork Embedding。 在 2013 年之后,也就是 Mikolov 提出 Word2Vec 之后,人们将注意力转移到 Network Embedding 上,并在此之后出现了很多有名的算法——DeepWalk、LINE、Node2Vec 等等。但是所有的这些方法都需要分成两步分别优化,一个是基于随机游走的生成序列和另一个是半监督学习的训练。 2013 年,本文作者提出了基于空间的图卷积神经网络,通过在图上进行卷积来完成特征提取,并取得非常好的效果。 1. Introduction 我们知道对于 CNN 网络中来说,其核心在使用了基于 Kernel 的卷积操作来提取图像的特征,卷积操作类似于对 计算区域内的中心节点和相邻节点进行加权求和 : CNN 之所以能成为图像领域的明珠却很少应用于其他领域原因是: 图片是一个规整的二维矩阵 ,无论 Kernel 平移到图片中的哪个位置都可以保证其运算结果的一致性,即: 平移不变性 。CNN

科学计算库Numpy基础操作

社会主义新天地 提交于 2020-02-27 03:22:17
pycharm,python3.7,numpy版本1.15.1 2018年9月11日04:23:06 """ 科学计算库Numpy基础操作 时间:2018\9\11 0011 """ import numpy print("""\n------以矩阵的方式读取数据------\n ------------genfromtxt函数('文件路径',delimiter = '分隔符',dtype = 读取方式)---------------------""") """ numpy.ndarray可以当做一个矩阵 """ np_test = numpy.genfromtxt('Numpy_test.txt', delimiter = ',', dtype = str) # 通常以str方式读取,如果有float,再进行转换 print(type(np_test)) print(np_test) # print(help(numpy.genfromtxt)) # 打印帮助文档 print("""\n------numpy.array------\n ------------numpy中最核心的结构------------------------------------------""") # 传入list结构,转换为ndarray格式 vector = numpy.array([5, 10,

CCM(Color Correction matrix)

故事扮演 提交于 2020-02-27 02:25:31
CC出现的原因是什么 是因为相机的感光曲线和人类并不相同 AWB之后。AWB把白色校正了,相应的其他色彩也跟着有明显的变化,可以说色彩基本正确了,只是饱和度有点低,色彩略有点偏差。CCM就是要保持白色(灰色)不变,把其他色彩校正到非常精准的地步。 WB sensor响应的RGB分别乘上一个系数,使得R’ = G’ = B’。 R‘ = R x R_Gain G ’ = G x G_Gain B‘ = B x B_Gain 颜色校正主要为了校正在滤光板( Color Filter Arrays, CFA)处各颜色块之间的颜色渗透带来的颜色误差。 一般颜色校正的过程是首先利用该图像传感器拍摄到的图像与标准图像相比较,以此来计算得到一个校正矩阵。该矩阵就是该图像传感器的颜色校正矩阵。在该图像传感器应用的过程中,及可以利用该矩阵对该图像传感器所拍摄的所有图像来进行校正,以获得最接近于物体真实颜色的图像。 一般情况下,对颜色进行校正的过程,都会伴随有对颜色饱和度的调整。颜色的饱和度是指色彩的纯度,某色彩的纯度越高,则其表现的就越鲜明;纯度越低,表现的则比较黯淡。RGB三原色的饱和度越高,则可显示的色彩范围就越广泛。 CCM就是一个3x3的矩阵,数据结构就是 ,现在要做的就是加入系数,把color进行调整。CCM的实现比较简单,就是一个简单的矩阵运算,它的困难在于如何确定矩阵的系数

如何使用new在C ++中声明2d数组?

回眸只為那壹抹淺笑 提交于 2020-02-27 01:28:34
如何使用new声明2D数组? 就像,对于“普通”数组,我将: int* ary = new int[Size] 但 int** ary = new int[sizeY][sizeX] a)无法工作/编译,b)无法完成以下任务: int ary[sizeY][sizeX] 做。 #1楼 在C ++ 11中,可能: auto array = new double[M][N]; 这样,内存不会被初始化。 要初始化它,请执行以下操作: auto array = new double[M][N](); 示例程序(使用“ g ++ -std = c ++ 11”编译): #include <iostream> #include <utility> #include <type_traits> #include <typeinfo> #include <cxxabi.h> using namespace std; int main() { const auto M = 2; const auto N = 2; // allocate (no initializatoin) auto array = new double[M][N]; // pollute the memory array[0][0] = 2; array[1][0] = 3; array[0][1] = 4; array[1]

Java面向对象编程 -6.4

余生颓废 提交于 2020-02-27 00:10:06
二维数组 数组的定义格式 数组的动态初始化:初始化之后数组中的每一个元素的保存的内容为其对应数据类型的默认值 声明并初始化数组: 数据类型 数组名称 [][] = new 数据类型[行个数][列个数]; 数据类型 [][] 数组名称 = new 数据类型[行个数][列个数]; 数组的静态初始化:在数组定义的时候就为其设置好了里面的内容 简化格式: 数据类型 数组名称 [][] = {{数据1,数据2,数据3.....},{数据1,数据2,数据3.....},....} 数据类型 [][] 数组名称 = {{数据1,数据2,数据3.....},{数据1,数据2,数据3.....},....} 完整格式:(建议用完整形式 匿名数组) 数据类型 数组名称 [][] = new 数据类型 []{{数据1,数据2,数据3.....},{数据1,数据2,数据3.....},....} 数据类型 [][] 数组名称 = new 数据类型 []{{数据1,数据2,数据3.....},{数据1,数据2,数据3.....},....} x表示列 y表示行 如果我们用foreach来完成呢 根据foreach的输入格式可以清楚观察到 二维数组其实就是数组嵌套使用 数组用循环,二维数组就用二重循环 ,三维数组就用三重循环 来源: https://www.cnblogs.com/sakura579/p