精华内容
下载资源
问答
  • 今天小编就为大家分享一篇python 维矩阵转三维矩阵示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • A是一个三维矩阵,其中每一页的矩阵是4*2的,B是2*2的维矩阵,直接[A,B]MATLAB运行显示串联维度不同
  • 程序功能:从三维数组提取出任意二维的数据,并保存在新的二维矩阵中,且能所以变换顺序。
  • 维矩阵 * 三维矩阵 * 维矩阵 得到了一个维矩阵。 即: (n * c1) x (m * c1 * c2) x (n * c2) 得 n * m 实现主要参考的是tensorflow的matmul运算对于高维矩阵的乘法支持batch的操作,只要保证高维矩阵最后两维...

    最近看论文时看到了一个让我费解的操作。
    二维矩阵 * 三维矩阵 * 二维矩阵 得到了一个二维矩阵。
    即:

    (n * c1) x (m * c1 * c2) x (n * c2) 得 n * m

    实现主要参考的是tensorflow的matmul运算对于高维矩阵的乘法支持batch的操作,只要保证高维矩阵最后两维之前的维度一样就可以。直接上例子比较直观。

    import tensorflow as tf
    g = tf.Graph()
    with g.as_default():
        x = tf.ones([2, 3, 1], dtype=tf.float32)
        y = tf.ones([2, 1, 4], dtype=tf.float32)
        z = tf.matmul(x, y)
    
    p <span class="token operator">=</span> tf<span class="token punctuation">.</span>ones<span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">]</span><span class="token punctuation">,</span> dtype<span class="token operator">=</span>tf<span class="token punctuation">.</span>float32<span class="token punctuation">)</span>
    q <span class="token operator">=</span> tf<span class="token punctuation">.</span>ones<span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">6</span><span class="token punctuation">]</span><span class="token punctuation">,</span> dtype<span class="token operator">=</span>tf<span class="token punctuation">.</span>float32<span class="token punctuation">)</span>
    r <span class="token operator">=</span> tf<span class="token punctuation">.</span>matmul<span class="token punctuation">(</span>p<span class="token punctuation">,</span> q<span class="token punctuation">)</span>
    

    with tf.compat.v1.Session(graph=g) as sess:
    print(sess.run(z).shape) # (2, 3, 4)
    print(sess.run(r).shape) # (2, 3, 1, 6)

    比较让我震惊的是在tensorflow2.0版本可以按下面计算,当然这样计算比较符合理想化结果,例子中就是300个二维矩阵分别跟一个二维矩阵去乘。
    numpy和torch也是支持这样计算的,但是numpy的结果的维度有所不同。

    import tensorflow as tf
    g = tf.Graph()
    with g.as_default():
        a = tf.ones([2, 3], dtype=tf.float32)
        b = tf.ones([300, 3, 6], dtype=tf.float32)
        d = tf.matmul(a, b)  # (300,2,6),这一步2.0版本能够运行令人费解
    
    d <span class="token operator">=</span> tf<span class="token punctuation">.</span>transpose<span class="token punctuation">(</span>d<span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">)</span>  <span class="token comment"># d:(2,300,6)</span>
    c <span class="token operator">=</span> tf<span class="token punctuation">.</span>ones<span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">6</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">,</span> dtype<span class="token operator">=</span>tf<span class="token punctuation">.</span>float32<span class="token punctuation">)</span>  <span class="token comment"># 原本c应该是(2,6)</span>
    
    e <span class="token operator">=</span> tf<span class="token punctuation">.</span>matmul<span class="token punctuation">(</span>d<span class="token punctuation">,</span> c<span class="token punctuation">)</span>  <span class="token comment"># e:(2,300,1)</span>
    e <span class="token operator">=</span> tf<span class="token punctuation">.</span>reshape<span class="token punctuation">(</span>e<span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">300</span><span class="token punctuation">]</span><span class="token punctuation">)</span>
    

    with tf.compat.v1.Session(graph=g) as sess:
    print(sess.run(e).shape)
    # print(sess.run(d).shape)

    tensorflow1.0版本不可以按上述计算,在第一个matmul的时候必须要将b reshape一下,具体计算可以参考:
    https://blog.csdn.net/weixin_41024483/article/details/88536662

    展开全文
  • Numpy维矩阵与三维矩阵的乘积

    万次阅读 2018-12-04 19:28:58
    乘法运算类型及其定义 ndarry情况下: 运算符号* — 逐元素相乘 np.multiply(a,b)----逐元素相乘 np.dot(a, b)----两个二维矩阵满足第一个矩阵的列数与第二个矩阵的行数相同,那么...当为二维三维乘积时:(3...

    乘法运算类型及其定义
    ndarry情况下:
    运算符号* — 逐元素相乘
    np.multiply(a,b)----逐元素相乘
    np.dot(a, b)----两个二维矩阵满足第一个矩阵的列数与第二个矩阵的行数相同,那么可以进行矩阵的乘法,即矩阵积
    np.matmul(a, b)—矩阵运算,矩阵积

    matrix情况下
    只有multiply是按元素相乘,其它都是矩阵运算。

    当为二维与三维乘积时:(3,3,2)*(3,3)
    矩阵相乘None表示按行切片
    arr3[:,:,None]表示arr3按行切片

    在这里插入图片描述

    展开全文
  • 一、 将一个5X20的二维矩阵变为一个5X10X2的三维数据。 import numpy as np X_test = np.arange(100).reshape(5,20) ...得到的三维的X_test是5个二维的二维矩阵叠加而成的。 相当于,将原来5行的...

    一、

    将一个5X20的二维矩阵变为一个5X10X2的三维数据。

    import numpy as np
    X_test = np.arange(100).reshape(5,20)
    
    print(X_test)
    X_test = X_test.reshape([X_test.shape[0], 10, 2])

    得到的三维的X_test是5个二维的二维矩阵叠加而成的。

    相当于,将原来5行的数据都分别reshape成了10*2的矩阵。

    第一个二维矩阵为:X_test = [0, :, :]            第二个二维矩阵为:X_test = [1, :, :]                      

                                                    

    第三个二维矩阵为:X_test = [2, :, :]            第四个二维矩阵为:X_test = [3, :, :]

                                                     

    第五个二维矩阵为:X_test = [2, :, :] 

    X_test =  X_test.reshape([5,20])

    再重新reshape回来后,与原始的X_test数据相同。

    二、

    X = np.arange(800).reshape(400,2)

    x1 = X.reshape([2,20,20])

    x2 = x1.reshape([2,400])

    这里可以看做,将x1拉伸为一维向量后,再对这个一维向量进行reshape

    x3 = x1.reshape([400,2])

    x4 = x2.T   可以看到,转置与上面两者的区别,是不等同的

     

    展开全文
  • 一组系数构成的向量跟三维矩阵的每层对应相乘,用matlab实现如下: v = [1;2]; A = ones(2,2,2); vr = reshape(v,1,1,2); %将向量v变成一个第三个维度上的向量 B = vr .* A;

    一组系数构成的向量跟三维矩阵的二维层对应相乘,用matlab实现如下

    v = [1;2];
    A = ones(2,2,2);
    vr = reshape(v,1,1,2); %将向量v变成一个第三个维度上的向量
    B = vr .* A; %点乘
    

    在这里插入图片描述

    运行结果
    在这里插入图片描述
    有用点个赞 ୧(⁎˃ ◡˂⁎)୨ꔛ♩

    展开全文
  • 三维旋转矩阵和右分析

    万次阅读 多人点赞 2019-10-02 10:44:12
    突然发现自己被旋转矩阵的左给搞糊涂了,查了不少博客还是有点晕,这里自己总结一下: 本文所讨论均是基于右手坐标系,旋转也是以正方向旋转,如图所示: ...由于三维旋转可以分解成分别绕...
  • MATLAB对一个二维矩阵三维

    万次阅读 2019-03-14 12:25:04
    1 准备好二维矩阵,比如我这有个3x16的矩阵叫SFW1 2 画三维图,一句代码就OK mesh(SFW1) 3 结果如下
  • 按照向量order指定的顺序重排A的各。B元素和A元素完全相同。但由于经过重新排列,在A、B访问同一个元素使用的下标就不一样了。order的元素必须各不相同。 对b=permute(a(:,1,:),[1 3 2]);进行解释:(:,1,:)...
  • python 维矩阵转三维矩阵

    万次阅读 2018-10-09 21:58:26
    &gt;&gt;&gt; import numpy as np &gt;&gt;&gt; a = np.arange(12).reshape(3,4) &gt;&gt;&gt; a array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) ...clas...
  • MATLAB对一个二维矩阵三维

    万次阅读 2017-03-08 10:26:33
    现有一个400*400二维矩阵,画一个三维图,横坐标是矩阵元素的行号,纵坐标是矩阵元素的列号,三维图形显示的高度/值是矩阵上对应的元素值。 可实现程序如下: x =Plot_Talbe(400, 400); [X, Y] = meshgrid(1:400, 1...
  • matlab中三维数组与二维矩阵的关系

    千次阅读 2018-04-20 14:45:44
    I=zeros(2,2,3);%创建一个两行两列的三维数组 a=I(:,:,2); 此时a是一个两行两列全零的二维矩阵,并不是三维数组
  • [M,N]=size(data); x=1:1:M; y=1:1:N; [X,Y]=meshgrid(x,y); mesh(X,Y,data); shading interp; data为想要3D显示的二维矩阵
  • 三维变换矩阵和右分析

    万次阅读 2016-07-05 01:38:39
    我在前面博客提到,当三维坐标点发生旋转时,如果采用矩阵运算就会需要考虑“左”和“右”。若绕静坐标系(世界坐标系)旋转,则左,也是变换矩阵*坐标矩阵;若是绕动坐标系旋转(自身建立一个坐标系),则...
  • matlab三维数组与二维矩阵相乘问题

    千次阅读 2019-03-22 14:28:00
    近来在搞一个改进近场music算法的仿真问题,用matlab进行二维搜索的时候写了很多for循环,导致运行速度...考虑到matlab语言本身的矩阵运算特点,改用三维数据解决二维搜索问题,下面记录过程遇到的一点问题与解决方法
  • 二维旋转矩阵推导: 点沿轴逆时针旋转度后变为点: 有, 则旋转矩阵为 同理可得在三维坐标系(右手准则)下: 绕轴逆时针旋转角度旋转矩阵为: 绕轴逆时针旋转角度旋转矩阵为: 绕轴逆时针旋转角度...
  • matlab的三维矩阵含义

    万次阅读 2019-01-11 21:32:30
    a(:,:,2)=ones(2,3) 对于一个矩阵a先定义好第三维,即在哪一个页内,确定第三个维度后,前两个维度就跟二维矩阵一样,一个行数一个列数确定一个数值。 ...
  • MATLAB 三维矩阵二维

    千次阅读 2011-03-22 14:47:00
    2019独角兽企业重金招聘Python工程师标准>>> ...
  • 二维矩阵二维矩阵之间的卷积

    千次阅读 2020-04-25 04:02:24
    由于在数字信号处理(Digital Singal Processing, DSP)这门课只学了一维矩阵之间的卷积运算。在查阅matlab 函数conv2代码与阅读有关卷积的博客,下面为个人总结部分: 假设我们的卷积核h为kernel矩阵(33): 待...
  • Numpy 维矩阵 乘以 三维矩阵 (Numpy, 2D matrix multiplies 3D matrix) Learn to apply the broadcast rule in Numpy. ======== goal: element-wise matrix multiplication arguments: A: 2×3×4 B: 2×4 C = A*B...
  • 目前有两个矩阵A(2,3)和B(2,3), 我们知道把两个矩阵进行左右拼接或者上下拼接的时候可以直接写 C=[A,B]或C=[A;B] 但是如果想前后拼接呢? C(2,3,2) 这时候就可以使用函数cat来连接两个矩阵. 比如 C=cat(3,A,B) 其中3...
  • 解决方法 貌似Matlab只支持一维与二维二维三维矩阵乘法。把高维矩阵降维就能解决了,但是需要注意降维之后矩阵乘法是否结果一致。stackoverflow的回答 ...
  • 1、matlab二维转换为三维矩阵 这里用到reshape函数 格式为AA1=reshape(A1,[行,列,页]) 如下所示 A1=[2 2 2 2 2.5 2.5 2.5 2.5 1.8 1.8 1.8 1.8 2.2 2.2 2.2 2.2 2 2 2 2 1.8 1.8 1.8 1.8 2.1 2.1 2.1 2.1 2 2 2 2 ...
  • Python中三维矩阵图像的解释

    千次阅读 2020-09-26 23:14:13
    对于一个有m*n个像素的图片,表示为三维矩阵就是(m, n, 3),其中m表示高,n表示列,3表示该元素的RGB色彩值。也就是下面这个矩阵:每个蓝色的框代表的就是一个像素,该像素的值为rgb色彩值,如可以是[70 69 64],该...
  • goal:把(2, 3, 2)的matrix打平成(2, 3*2)的matrix import numpy as np x = np.arange(12).reshape((2, 3, 2)) Out[44]: array([[[ 0, 1], [ 2, 3], [ 4, 5]], [[ 6, 7], [ 8, 9], [10, 11]]]) ...
  • torch.shape()三维矩阵降为二维

    千次阅读 2020-04-15 00:01:32
    import torch if __name__ == '__main__': a = torch.tensor([ [ [1,2,3,2,1], [2,5,6,3,6] ], [ [2,1,5,9,8], [4,6,8,1,1] ] ],dty...
  • 利用Matlab 解决二维矩阵问题

    千次阅读 2017-12-01 15:06:35
    利用matlab解决二维矩阵问题
  • 在MATLAB,我现在有三个1*1253 的一维矩阵,现在我想把这三个一维矩阵合并成一个三维的矩阵,也就是变成一个1*1253*3的矩阵,各位有知道怎么合成的吗

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 172,628
精华内容 69,051
关键字:

三维矩阵中二维自乘