二维

二维负下标数组创建模板

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-28 22:50:22
创建一个下标可以为负数的二维数组 int a [ 105 ] [ 105 ] ; int * b [ 105 ] ; for ( int i = 1 ; i <= 100 ; i ++ ) { for ( int j = 1 ; j <= 100 ; j ++ ) { a [ i ] [ j ] = i + j ; } } for ( int i = 1 ; i <= 100 ; i ++ ) { b [ i ] = & a [ i ] [ 10 ] ; } int * * c = & b [ 10 ] ; //以a[11][11]当作c[1][1] cout << c [ 1 ] [ 1 ] << endl ; //输出22 return 0 ; 来源: CSDN 作者: NEFU_kadia 链接: https://blog.csdn.net/NEFU_kadia/article/details/104564800

Leetcode 搜索二维矩阵 II

让人想犯罪 __ 提交于 2020-02-28 05:52:08
编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 示例: 现有矩阵 matrix 如下: [ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30] ] 给定 target = 5 ,返回 true 。 给定 target = 20 ,返回 false 。 思路:先二分target在哪一行,然后在对行进行二分找在哪一列 1 boolean searchMatrix(int[][] matrix, int target) { 2 if(matrix.length==0||matrix[0].length==0) 3 { 4 return false; 5 } 6 7 int l=0,r=matrix.length-1; 8 int mid=0; 9 while(l<=r) 10 { 11 mid=(l+r)/2; 12 if(target==matrix[mid][0]) 13 return true; 14 else if(target>matrix[mid][0]) 15 l=mid+1; 16 else r=mid-1

差分——(2)二维差分

倾然丶 夕夏残阳落幕 提交于 2020-02-26 09:10:45
前面部分我们介绍了一维差分, https://blog.csdn.net/justidle/article/details/103761632 。下面我们扩展一下,来介绍二维差分。 什么是二维差分 我们有一个矩阵,如下图所示。 根据二维前缀和表示的是右上角矩形的和,由于差分只涉及前面相邻的数(由一维可以推出),并且由前面范围的数相加得到这个位置的数。那么类比二维前缀和和一维差分,可以简单推测出二维差分的公式 如何从差分矩阵得到原矩阵呢?可以参考下面公式 举例 比如,我们有一个矩阵 a,如下所示: 1 2 4 3 5 1 2 4 6 3 5 9 那么对应的二维差分矩阵 p 如下: 1 1 2 -1 4 -5 -1 3 1 1 1 2 应用  如果我们要在左上角是 (x1,y1),右下角是 (x2,y2) 的矩形区间每个值都 +a,如下图所示 在我们要的区间开始位置(x1,y1)处 +c,根据前缀和的性质,那么它影响的就是整个黄色部分,多影响了两个蓝色部分,所以在两个蓝色部分 -c 消除 +c 的影响,而两个蓝色部分重叠的绿色部分多了个 -c 的影响,所以绿色部分 +c 消除影响。所以对应的计算方法如下: diff[x1][y1] += c; diff[x1][y2+1] -=c; diff[x2+1][y1] -=c; diff[x2+1][y2+1] += c; 模板题 链接

LeetCode 74——搜索二维矩阵

浪尽此生 提交于 2020-02-25 12:35:23
1. 题目 2. 解答 若矩阵为空,比如 [], [[]],此时直接返回 false。 若目标值小于矩阵第一个元素或者大于矩阵最后一个元素,则目标值不在矩阵范围内,直接返回 false。 其他情况下,则从矩阵第一行开始逐行扫描。若目标值位于矩阵某一行数值范围内,再针对矩阵的某一行用二分查找精准定位。 class Solution { public: bool binary_search(vector<int>& data, int target) { int left = 0; int right = data.size() - 1; int mid = 0; while(left <= right) { mid = left + (right - left) / 2; if (data[mid] == target) { return true; } if (data[mid] < target) { left = mid + 1; } else { right = mid - 1; } } return false; } bool searchMatrix(vector< vector<int> > & matrix, int target) { int row = matrix.size(); if (row == 0) return false; // [] 矩阵为空

OpenGL视点变换,模型变换,投影变换,视口变换详解

荒凉一梦 提交于 2020-02-23 03:40:31
OpenGL视点变换,模型变换,投影变换,视口变换详解 http://blog.csdn.net/yhb5566/article/details/7714319 作者:luck_net | 出处:博客园 | 2012/2/22 14:46:49 | 阅读112次 OpenGL通过相机模拟、可以实现计算机图形学中最基本的三维变换,即几何变换、投影变换、裁剪变换、视口变换等,同时,OpenGL还实现了矩阵堆栈等。理解掌握了有关坐标变换的opengl图片内容,就算真正走进了精彩地三维世界。 一、OpenGL中的三维物体的显示 (一)坐标系统 在现实世界中,所有的物体都具有三维特征,但计算机本身只能处理数字,显示二维的图形,将三维物体及二维数据联系在一起的唯一纽带就是坐标。 为了使被显示的三维物体数字化,要在被显示的物体所在的空间中定义一个坐标系。这个坐标系的长度单位和坐标轴的方向要适合对被显示物体的描述,这个坐标系称为世界坐标系。世界坐标系是始终固定不变的。 OpenGL还定义了局部坐标系的概念,所谓局部坐标系,也就是坐标系以物体的中心为坐标原点,物体的旋转或平移等操作都是围绕局部坐标系进行的,这时,当物体模型进行旋转或平移等操作时,局部坐标系也执行相应的旋转或平移操作。需要注意的是,如果对物体模型进行缩放操作,则局部坐标系也要进行相应的缩放,如果缩放比例在案各坐标轴上不同

对二维动态数组vector使用sort()函数的结果

左心房为你撑大大i 提交于 2020-02-23 01:45:57
sort() 在不引入 cmp 时默认状态是 algorithm 中以字典序从小到大排序,而对于二维数组 vector ,也可以使用 sort(vector.begin(),vector.end()); ,结果是不改变每一行内数组内容,而对各行从首元素往后按字典序对各行排序。 来源: CSDN 作者: Mickeyyyyyyy 链接: https://blog.csdn.net/GalaxyFan/article/details/104445850

卷积神经网络---CNN基础组件认识

ε祈祈猫儿з 提交于 2020-02-21 18:16:20
文章目录 卷积神经网络基础 二维卷积层 二维互相关运算 二维卷积层 互相关运算与卷积运算 特征图与感受野 填充和步幅 填充 步幅 多输入通道和多输出通道 多输入通道 多输出通道 1x1卷积层 卷积层与全连接层的对比 卷积层的简洁实现 池化 二维池化层 池化层的简洁实现 卷积神经网络基础 本节我们介绍卷积神经网络的基础概念,主要是卷积层和池化层,并解释填充、步幅、输入通道和输出通道的含义。 二维卷积层 本节介绍的是最常见的二维卷积层,常用于处理图像数据。 二维互相关运算 二维互相关(cross-correlation)运算的输入是一个二维输入数组和一个二维核(kernel)数组,输出也是一个二维数组,其中核数组通常称为卷积核或过滤器(filter)。卷积核的尺寸通常小于输入数组,卷积核在输入数组上滑动,在每个位置上,卷积核与该位置处的输入子数组按元素相乘并求和,得到输出数组中相应位置的元素。图1展示了一个互相关运算的例子,阴影部分分别是输入的第一个计算区域、核数组以及对应的输出。 图1 二维互相关运算 下面我们用 corr2d 函数实现二维互相关运算,它接受输入数组 X 与核数组 K ,并输出数组 Y 。 import torch import torch . nn as nn def corr2d ( X , K ) : H , W = X . shape h , w = K .

deeplearning_class5:卷积神经网络

…衆ロ難τιáo~ 提交于 2020-02-21 10:17:05
1 二维卷积层 卷积神经网络中最常见的是二维卷积层,常用与图像处理。 1.1 二维互相关运算 二维互相关(cross-correlation)运算的输入是一个二维输入数组和一个二维核(kernel)数组,输出也是一个二维数组,其中核数组通常称为卷积核或过滤器(filter)。卷积核的尺寸通常小于输入数组,卷积核在输入数组上滑动,在每个位置上,卷积核与该位置处的输入子数组按元素相乘并求和,得到输出数组中相应位置的元素。图1展示了一个互相关运算的例子,阴影部分分别是输入的第一个计算区域、核数组以及对应的输出。 1.2 互相关运算与卷积运算 卷积层得名于卷积运算,但卷积层中用到的并非卷积运算而是互相关运算。我们将核数组上下翻转、左右翻转,再与输入数组做互相关运算,这一过程就是卷积运算。由于卷积层的核数组是可学习的,所以使用互相关运算与使用卷积运算并无本质区别。 1.3 特征图与感受野 二维卷积层输出的二维数组可以看作是输入在空间维度(宽和高)上某一级的表征,也叫特征图(feature map)。影响元素 𝑥 的前向计算的所有可能输入区域(可能大于输入的实际尺寸)叫做 𝑥 的感受野(receptive field)。 以图1为例,输入中阴影部分的四个元素是输出中阴影部分元素的感受野。我们将图中形状为 2×2 的输出记为 𝑌 ,将 𝑌 与另一个形状为 2×2 的核数组做互相关运算

python数据分析学习(2)pandas二维工具DataFrame讲解

空扰寡人 提交于 2020-02-20 13:18:42
目录 二:pandas数据结构介绍   下面继续讲解pandas的第二个工具DataFrame。 二:pandas数据结构介绍 2.DataFarme   DataFarme表示的是矩阵的数据表,包含已排序的列集合,是一个二维数据工具。每一列可以是不同的数据类型值。它既有行索引又有列索引,可以看作是一组共享相同索引的Series对象。DataFarme的数组方法有很多,比如用index.name获取某列的值,用values获取行的值。这里先介绍一些常用的知识。   (1)构建DataFrame   有多种方式可以构建DataFrame,其中最常用的方式是利用包含等长度列表或NumPy数组的字典形成DataFrame: # 下面是采用NumPy的字典的方式来进行构建DataFrame data = {'a':[1,2,3,4],'b':[1.0,2.0,3.0,4.0],'c':['a','b','c','d']} frame = pd.DataFarme(data)   结果如下:   产生的DataFrame的行索引会自动分配,列索引为字典的每个键。   (2)head   对于大型的矩阵数据,head方法将会只选出头部的五行:   (3)指定列   如果指定了列,则会按照指定顺序排列,用columns属性,但是在数组字典中一定要存在该列的标签名,如果没有则在结果中出现缺失值:

5.1 二维卷积层

依然范特西╮ 提交于 2020-02-20 05:40:03
卷积神经网络 (convolutional neural network)是含有卷积层(convolutional layer)的神经网络。本章中介绍的卷积神经网络均使用最常见的二维卷积层。它有高和宽两个空间维度,常用来处理图像数据。本节中,我们将介绍简单形式的二维卷积层的工作原理。 5.1.1 二维互相关运算 虽然卷积层得名于卷积(convolution)运算,但我们通常在卷积层中使用更加直观的 互相关 (cross-correlation)运算。在二维卷积层中,一个二维输入数组和一个二维核(kernel)数组通过互相关运算输出一个二维数组。 我们用一个具体例子来解释二维互相关运算的含义。如图5.1所示,输入是一个高和宽均为3的二维数组。我们将该数组的形状记为 3 × 3 3 \times 3 3 × 3 或(3,3)。核数组的高和宽分别为2。该数组在卷积计算中又称卷积核或过滤器(filter)。卷积核窗口(又称卷积窗口)的形状取决于卷积核的高和宽,即 2 × 2 2 \times 2 2 × 2 。图5.1中的阴影部分为第一个输出元素及其计算所使用的输入和核数组元素: 0 × 0 + 1 × 1 + 3 × 2 + 4 × 3 = 19 0\times0+1\times1+3\times2+4\times3=19 0 × 0 + 1 × 1 + 3 × 2 + 4 × 3 =