精华内容
下载资源
问答
  • 多维数据集中包含海量的复杂高维数据,如何对这些数据进行科学的理解、分析使用,是数据挖掘领域的一个重点难点课题.针对传统可视化算法无法解决高维数据多属性的可视化问题,算法复杂、适用性较差的不足,提出基于...
  • 这是一个关于怎样想象张量(多维数组),形成直观形象的小方法,我在编程的时候经常使用,百试不爽……-----------------分割线-----------我们先从一维的开始,很容易想象,就是一个向量;二维也很简单,多个向量排...

    这是一个关于怎样想象张量(多维数组),形成直观形象的小方法,我在编程的时候经常使用,百试不爽……

    -----------------分割线-----------

    我们先从一维的开始,很容易想象,就是一个向量;二维也很简单,多个向量排在一起矩阵;但是这种方法到三维,四维,甚至更高维的就无能为力了。

    所以我们需要设计一个小模型帮助我们想象(借助生活中常见的东西对抽象的对象或者模型进行想象和类比,形成直观形象和可以帮助我们理解复杂知识)。模型很简单,就是常见的书本,现在我们把书本和高维张量联系起来,一维想象成书里的一行文字,二维想象成一页,三维自然就是一本书了(每个维度分别是第几页,第几行,第几排)。好多人看到这里觉得也不过如此嘛,到了四维,五维…怎么办,看你怎么继续装逼!

    不要慌,车坐稳了,我们继续,我之所以选择这个模型可不是那么简单的,背后有着深刻的思考 ,因为这个模型有良好的拓展性(合理的选择模型才能事半功倍,这背后的思维才是我们需要自觉的去学习和培养的)。

    四维的情况,一本书不够用了,那就加书呗,想加多少都行。

    到了五维,加书也不行了,放不下了。那怎么办?简单 买个书架,分个层。(每个维度分别是第几层,第几本书,第几页,第几行,第几排)

    六维,一个书架不行了,那就多买几个。

    七维,光买书架也放不下了,我们得造个图书馆。要是一个图书馆也放不下不,那就给我继续造,反正脑子里想不要钱

    往下可以继续加维度,城市,省,国家,星球,星系 只要合理都行,随你任意加。

    展开全文
  • 本文已搬家至【OpenCV学习】一个多维数组(矩阵)一个一维,但是包含高维数据的数组之间的区别
    展开全文
  • 知识点 - 高维前缀

    2019-09-03 10:45:44
    知识点 - 高维前缀 解决问题类型: 求解多维数组的前缀,或者是求一个集合中所有有效子集的累加。 前置知识 前缀 一维前缀: for(int i=1;i<=n;i++) b[i]=b[i-1]+a[i]; 二维前缀: for(int i=1;i&...

    知识点 - 高维前缀和

    解决问题类型:

    求解多维数组的前缀和,或者是求一个集合中所有有效子集的累加。

    前置知识

    • 前缀和

    一维前缀和:

    for(int i=1;i<=n;i++)
    	b[i]=b[i-1]+a[i];
    

    二维前缀和:

    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
             b[i][j]=b[i-1][j]+b[i][j-1]-b[i-1][j-1]+a[i][j];
    

    三维前缀和:

    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            for(int k=1;k<=p;k++)
                  b[i][j][k]=b[i-1][j][k]+b[i][j-1][k]+b[i][j][k-1]
                             -b[i-1][j-1][k]-b[i-1][j][k-1]-b[i][j-1][j-1]
                             +b[i-1][j-1][k-1]+a[i][j][k];
    

    其实就是一个容斥。但是,随着维度t变高,容斥的复杂度是2t

    实现

    //一维
    for (int i = 1; i <= n; ++i) a[i] += a[i - 1];
    //二维
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            a[i][j]+=a[i][j-1];
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            a[i][j]+=a[i-1][j];
    //三维
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            for(int p=1;p<=k;p++)
            a[i][j][k]+=a[i-1][j][k];
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            for(int p=1;p<=k;p++)
            a[i][j][k]+=a[i][j-1][k];
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++) 
            for(int p=1;p<=k;p++)
            a[i][j][k]+=a[i][j][k-1];
    

    最后的解决方法就是高维前缀和,从低到高枚举位数,然后枚举从0 到n−1的所有元素

    核心代码如下:

    for(int i=0;(1<<i)<n;i++)
    	for(int j=0;j<n;j++)
    		if(j&(1<<i)) a[j]+=a[j^(1<<i)];
    

    高维差分大概就是把枚举顺序改改就差不多了。

    复杂度

    O(N2N)O(N*2^{N})

    例题

    https://www.hackerearth.com/zh/submission/30331502/

    给你一些数,问你能找出几对数使得ai&amp;aj=0a_{i} \&amp; a_{j}=0

    代码

    #include <bits/stdc++.h>
    using namespace std;
    #define rep(i,j,k) for(int i = (int)j;i <= (int)k;i ++)
    #define debug(x) cerr<<#x<<":"<<x<<endl
    #define pb push_back
    
    typedef long long ll;
    typedef pair<int,int> pi;
    const int MAXN = (int)1024*1024+7;
    
    int sum[MAXN],a[MAXN];
    
    int main()
    {
        ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    
        int T;
        cin >> T;
        while (T --) {
            memset(sum,0,sizeof(sum));
            memset(a,0,sizeof(a));
            int N;
            cin >> N;
            rep(i,1,N) {
                int tmp;
                cin >> tmp;
                sum[tmp] ++;
                a[tmp] ++;
            }
            for(int i = 0;1<<i < MAXN;i ++) {
                for(int j = 0;j < MAXN;j ++) {
                    if (1<<i&j) {
                        sum[j] += sum[1<<i^j];
                    }
                }
            }
            int ad = 1024*1024-1;
            ll ans = 0;
            rep(i,0,ad) {
                int to = ad^i;
                ans += 1LL*a[i]*sum[to];
            }
            cout << ans <<endl;
        }
    }
    
    
    展开全文
  • 作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 我们需要了解一个多维数组(矩阵)一个一维,但是包含高维数据的数组之间的区别。假设,你有n个点(每个点有x,y,z坐标值)需要保存到CvMat* 中,你其实有四种...

    作者:gnuhpc
    出处:http://www.cnblogs.com/gnuhpc/

    我们需要了解一个多维数组(矩阵)和一个一维,但是包含高维数据的数组之间的区别。假设,你有n个点(每个点有x,y,z坐标值)需要保存到CvMat* 中,你其实有四种方式可以使用,但这四种方式的存储形式不同。你可能使用一个二维矩阵,矩阵大小为n行3列,数据类型为CV32FC1。你还可以使用一个二维矩阵,矩阵大小为3行n列,数据类型为CV32FC1;第三种可能性是,你使用一个一维矩阵,n行1列,数据类型为CV32FC3;最后,你还可以使用1行三列,数据类型为CV32FC3.这几种方式,在内存分配上,有些是相同的,有些是不同的,如下所示:
    n个点的集合(n=5);
    (x0 y0 z0) (x1 y1 z1) (x2 y2 z2) (x3 y3 z3) (x4 y4 z4)
    n行1列时(数据类型CV32FC3)内存分配情况
    x0 y0 z0 x1 y1 z1 x2 y2 z2 x3 y3 z3 x4 y4 z4
    1行n列时(数据类型CV32FC3)内存分配情况
    x0 y0 z0 x1 y1 z1 x2 y2 z2 x3 y3 z3 x4 y4 z4
    n行3列时(数据类型CV32FC1)内存分配情况
    x0 y0 z0 x1 y1 z1 x2 y2 z2 x3 y3 z3 x4 y4 z4
    3行n列时(数据类型CV32FC1)内存分配情况
    x0 x1 x2 x3 x4 y0 y1 y2 y3 y4 z0 z1 z2 z3 z4
    我们可以看出,前三种的内存分配情况相同,但最后一种的内存分配不同。更复杂的是,如果有n维数组,每个数组的元素是c维(c可能是通道数)时。所以,多维数组(矩阵)和一个一维但包含多维数据的数组一般是不同的。
    对于一个Rows行Cols列,通道数为Channels的矩阵,访问其中第row行,第col列,第channel通道的数据,可以使用如下公式:
    数据地址偏移量=row*Cols*Channels+col*Channels+channel

    作者:gnuhpc
    出处:http://www.cnblogs.com/gnuhpc/

    转载于:https://www.cnblogs.com/gnuhpc/archive/2012/12/07/2806650.html

    展开全文
  • 我们需要了解一个多维数组(矩阵)一个一维,但是包含高维数据的数组之间的区别。假设,你有n个点(每个点有x,y,z坐标值)需要保存到CvMat* 中,你其实有四种方式可以使用,但这四种方式的存储形式不同。你可能使用...
  • Numpy中多维数组的切片操作 python中List 的切片操作一样,都是由start, end, step 三部分组成. x= np.arange(10) s1 = x[:3] s1 Out[22]: array([0, 1, 2]) s2 = x[1:8:2] s2 Out[25]: array([1, 3, 5, 7])
  • 51nod 2383 高维部分

    2018-12-21 16:52:05
    多维前缀: for (i=1;i&lt;=n;i++) for (j=1;j&lt;=n;j++) for (k=1;k&lt;=n;k++) a[i][j][k]+=a[i][j][k-1]; for (i=1;i&lt;=n;i++) for (j=1;j&lt;=n;j++) for (k=1;k&lt;=n;k++).....
  • 我们分析了在高维时空中与无质量标量场相关的引力效应,该时空是(d-n)维Minkowski空间与n维球面/圆柱对称空间的张量积,具有实体/平面角度赤字。 这些时空被认为是多维全局单极子(如果n⩾3)或宇宙弦(如果n = 2...
  • Numpy高维数据的理解

    2021-01-27 14:39:00
    当实际处理多维变量时,尤其需要使用到Tensorflow这样深度学习库,比如,图片数据批次其形状为:N×H×W×CN×H×W×C, 高维序列格式存在难以理解的问题。因此如何读懂这些高维序列是一个很基础的问题。列表1-...
  • 高维数据的分析

    千次阅读 2016-02-22 20:30:07
    随着科学技术的发展,人们在实际应用过程中经常会碰到各种类型的海量数据,如...研究表明,当维数越来越多时,分析处理多维数据的复杂度成本成指数级增长。在分析高维数据时,所需的空间样本数会随维数的增加而呈
  • 将传统压缩感知扩展至多维高维)情况,对于彩色图像、视频等高维信号进行更加高效的压缩表示。
  • 将改进的自适应步长公式应用于高维优化问题的求解方法中,通过对多个标准测试函数在多维空间特别是超高维空间(500维、800维、1000维)进行测试,并将其结果与其他算法进行比较,实验证明该改进算法在寻得最优解的...
  • 一般编程中用到最多的数据是常量、变量数组,而在科学计算各类算法中(例如推荐算法或图像处理算法),处理的数据对象往往是多维数据. 所以对多维数据的理解使用就显得尤为重要. 从左到右依次是, 标量, 1行3列...
  • 计算立方体外壳存在的缺点:(1)对于高维立方体需要计算的方体单元还是很多;(2)不支持高维OLAP 在任何时刻,大部分分析者只需要考察少数维的组合。这意味着,如果可以在高维空间内部放入少数维上快速计算多维...
  • t-SNE的主要用途是可视化探索高维数据。 它由Laurens van der MaatensGeoffrey Hinton在JMLR第九卷(2008年)中开发并出版。 t-SNE的主要目标是将多维数据集转换为低维数据集。 相对于其他的降维算法,对于数据...
  • pytorch点乘&高维矩阵乘法

    千次阅读 2020-06-11 23:12:29
    torch.mul直接用运算符 * 都是点乘(可广播) torch.mm只能二维矩阵相乘,而torch.matmul可以广播到多维 参见: https://blog.csdn.net/weixin_42105432/article/details/100691592
  • numpy高维数组获取top-K

    2021-01-12 14:41:10
    理论知识请自行翻阅numpy的argpartitionpartition方法的实现原理,该文章仅仅包含使用效率验证。此外,numpy版本需要>=1.8.0。 正文 不废话了,直接放代码,一看就懂,看不懂再说,自己跑一下就知道。 import...
  • Numpy高维数据的理解当实际处理多维变量时,尤其需要使用到Tensorflow这样深度学习库,比如,图片数据批次其形状为:N×H×W×CN×H×W×C, 高维序列格式存在难以理解的问题。因此如何读懂这些高维序列是一个很基础...
  • 提出了一种适用于恶意代码分类的高维特征融合方法,对恶意代码的静态二进制文件反汇编特征等进行提取,借鉴SimHash的局部敏感性思想,对多维特征进行融合分析处理,最后基于典型的机器学习方法对融合后的特征...
  • 首先将数据集缩减为较小的一组分区(多维数据集)。 使用了多种聚类技术,包括频谱聚类; 但是,还基于彼此连接的分区之间的路径长度引入了新技术。 还开发了用于聚类的视线算法。 具有12个具有不同属性的数据集的...
  • 多维标度分析

    万次阅读 2015-01-11 21:03:42
    多维标度法(Multidimensional Scaling)是一种多维标度法是一类多元统计分析方法的总称,包含各种各样的模型手段,其目的是通过各种途径把高维的研究对象转化成低维情形进行定位、分析归类,同时又保留对象间的...
  • Python 绘制 3 维以上的高维

    千次阅读 2019-06-28 13:58:00
    不过,我们仍然可以绘制出多维空间,今天就来用 Python 的 plotly 库绘制下三维到六维的图,看看长什么样。 数据我们使用一份来自UCI的真实汽车数据集,该数据集包括 205 个样本 26 个特征,从中选择 6 个特征来...
  • numpy多维数组理解

    2019-03-23 00:13:00
    当实际处理多维变量时,尤其需要使用到Tensorflow这样深度学习库,比如,图片数据批次其形状为:N×H×W×CN×H×W×C, 高维序列格式存在难以理解的问题。因此如何读懂这些高维序列是一个很基础的问题。 列表1-D ...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 266
精华内容 106
关键字:

多维和高维