精华内容
下载资源
问答
  • np.transpose函数

    2019-09-30 15:23:51
    接下来我们使用transpose函数,看看效果:b = a.transpose((1, 0))首先解释下transpose函数的输入参数(1,0)含义,我们可以理解为一个索引量,原始的索引本来是(0,1),其中的0代表着a的第一个维度即2(shape[0]...

    ranspose函数主要用来转换矩阵的维度。

    首先举个二维矩阵的例子:


    首先创建了一个二维的矩阵a,a的shape为(2, 3)即两行三列的意思。

    接下来我们使用transpose函数,看看效果:b = a.transpose((1, 0))


    首先解释下transpose函数的输入参数(1,0)含义,我们可以理解为一个索引量,原始的索引本来是(0,1),其中的0代表着a的第一个维度即2(shape[0]),其中的1代表的是a的第二个维度即3(shape[1])。现在我们输入参数(1,0)代表着我们要将矩阵a的第一个维度和第二个的维度进行调换。原来的shape为(2,3)现在调换后变成了(3,2)即三行两列。调换的shape确定后我们再将对应的参数填入即可。假设原来的矩阵中的一个元素a(i, j)现在填入b(j,i)中,就是将原来矩阵的元素按照其索引下标进行调换后填入新矩阵中,如下图所示:

    a = ([[a(0,0),  a(0,1),  a(0, 2)],

             [a(1,0),  a(1,1),  a(1,2)]])

    b = ([[a(0,0),  a(1,0)],          b = ([[b(0,0),  b(0,1)],

             [a(0,1),  a(1,1)],                    [b(1,0),  b(1,1)], 

             [a(0,2),  a(1,2)]])                   [b(2,0),  b(2,1)]])

    看完后是不是很像我们学过性代数中的转置,确实,对于二维矩阵可以这么理解,但维度更高就变的很抽象了。下面我们在举个三维矩阵的例子:

    我们创建了一个shape为(2,4,3)的三维矩阵c。接下来我们调换矩阵c的一、二维索引。

    d = c.transpose((1,0,2))    # 调换一、二维索引,原本索引是(0,1,2)

    调换索引前的矩阵c的shape是(2,4,3),调换矩阵c的一、二维索引后得到的d矩阵shape为(4,2,3)。d矩阵的元素值同样是将元素c[i,j,k]填入d[j,i,k]中,即将c矩阵的索引下标的第一维i和第二维j调换位置后填入d中。

    展开全文
  • 今天小编就为大家分享一篇numpy.transpose()实现数组的转置例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • np.transpose()函数是用来处理数组转置问题的 一维数组,通常我的理解就是和python中列表差不多, li = [i for i in range(10)] print(li) # 输出的结果是 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]` 二维数值,等同于矩阵...

    np.transpose炒鸡详细的讲解,如果看本文之前你不懂,看完你绝对能懂,你值得拥有
    一个电脑小白的自我成长之路*_&

    np.transpose()函数是用来处理数组转置问题的

    一维数组,通常我的理解就是和python中列表差不多,

    li = [i for i in range(10)]
    print(li)        # 输出的结果是  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]`
    

    二维数值,等同于矩阵。栗子如下:

    arr2 = np.arange(12).reshape(3, 4)
    print(arr2)    #  [[ 0  1  2  3]
    #                 [ 4  5  6  7]
    #                 [ 8  9 10 11]]
    

    np.arange(12)表示数值的数从0-11共12 个数,reshape(3,4)表示定义一个二维数值,行数是3列数为4,即3*4三行四列。用np.transpose()函数进行转置,行列转换后的结果为一个4行3列的结果,为:

    
    tran_arr2 = np.transpose(arr2)
    print(tran_arr2)   #   [[ 0  4  8]
     #                     [ 1  5  9]
     #                     [ 2  6 10]
     #                     [ 3  7 11]] 
    

    原二维数组arr2的第一列的三个数0, 4, 8转换成了tran_arr2的第一行[0, 4, 8]。从矩阵层面理解的话trans_arr2也就是原数组arr的转置矩阵。
    arr2[0, 0] = 0,中括号里可以理解为平面坐标位置[0 , 0] ,行理解为横坐标,列理解为纵坐标,即第一行第一列第一个数(为啥是第一行第一列,因为计算机是从0开始计数的),那arr2[2,3]是不是理解为位置是[2,3]的数,也就是第三行第四列的数,即11,看这样理解你就对啦。
    二维数值的索引比较好理解,行是0,列是1.

    #原数组
    [[ 0  1  2  3]
     [ 4  5  6  7]
     [ 8  9 10 11]]
     #转置后数组
    [[ 0  4  8]
     [ 1  5  9]
     [ 2  6 10]
     [ 3  7 11]]
    

    三维数组,arr3[d, h, w]有三个维度分别为深,高,宽,[d, h, w]可以理解为空间三维坐标x, z ,y 栗子如下:

    # arr3[0, 0, 0] = 0, arr3[0, 0, 1] = 1, arr3[0, 0, 2] = 2, arr3[0, 1, 0] = 3,
    # arr3[0, 1, 1] = 4, arr3[0, 1, 2] = 5, arr3[1, 0, 0] = 6,arr3[1, 0, 1] = 7
    # arr3[1, 0, 2] = 8, arr3[1, 1, 0] = 9, arr3[1, 1, 1] = 10,arr3[1, 0, 1] = 11
    arr3 = np.arange(12).reshape(2, 2, 3)
    for d in range(2):
        for h in range(2):
            for w in range(3):
                print(arr3[d, h , w])     # d也就是三维第一个参数表示深度,h也是第二个参数表示高,
                                          # w也是宽度第三个参数
    print(arr3[1, 0, 0])                  # 结果为6
    

    循环打印的结果很明显就是0,1,2,3,4,5,6,7,8,9,10,11啦。arr3为223的三维数组。输出arr3 的结果如下:
    arr3[1, 0, 0]表示的是深度为2,高为1,宽为1的数,即坐标位置为[1, 0, 0]的数就是6,如果你问arr3[0 , 1, 1],那就是4啦。
    对着代码画个,空间坐标系然后就明白啦。
    接着,就是理解一下索引啦,三维数组的索引d对应0,h对应1,w对应2。
    在这里插入图片描述
    即深度是2,索引号0;高度为2,索引号是1;宽度是3,索引号是2.
    再来理解np.transpose()函数是怎么将三维数组转换的。

    tran_arr3 = np.transpose(arr3, (1, 0, 2))   # 即深索引本身是0的数,用索引为1的高的数代替了,
                                                # 高的索引本身是1,用索引为0 的深的数换了
    print(tran_arr3)           #  [[[ 0  1  2]
                               #   [ 6  7  8]]
                               
                               #   [[ 3  4  5]
                               #  [ 9 10 11]]]
    

    np.transpose(arr3, (1, 0 ,2))的意思就深和高对换,宽位置不变。即数组中arr3[0,1,0] =3 和arr3[1,0,0] = 6对换,arr3[0 ,1 ,1]为4的数和arr3[1, 0 ,1]为7的数对调,arr3[0, 1, 2]的数5和arr3[1, 0, 2]为8的数对换。所以,输出tran_arr3的结果如上面代码的结果。犹如深和高都是2,直接互换就可以啦。如果不一样,又该怎么样呢?如果深和宽互换,代码如下:

    tran1_arr3 = np.transpose(arr3, (2, 1, 0))
    print(tran1_arr3)
    

    tran1_arr3 = np.transpose(arr3, (2, 1, 0)) 现在是深为2 ,宽为3进行互换,高不变。我们先猜猜结果,肯定是3*2**2的三维数组,即深度为3,高和宽是2的数组。结果到底怎么样呢?

    #原数组,arr3
    [[[ 0  1  2]
      [ 3  4  5]]
    
     [[ 6  7  8]
      [ 9 10 11]]]
     #arr[1, 0, 0]结果
    6
    # tran_arr3 = np.transpose(arr3, (1, 0, 2))深与高转换的数组,仍然是2*2*3的数组
    [[[ 0  1  2]
      [ 6  7  8]]
    
     [[ 3  4  5]
      [ 9 10 11]]]
    # tran1_arr3 = np.transpose(arr3, (2, 1, 0)) 深与宽转换后的数组,变成3*2*3的数组了
    [[[ 0  6]
      [ 3  9]]
    
     [[ 1  7]
      [ 4 10]]
    
     [[ 2  8]
      [ 5 11]]]
    

    具体的转换过程是这样的:
    在这里插入图片描述
    将其写成三维数组为:

    ####
    [[[坐标为(000)的数0,坐标为(001)的数6]
      [坐标为(010)的数3,坐标为(011)的数9]]
     [[坐标为(100)的数1,坐标为(101)的数7]
      [坐标为(110)的数4,坐标为(111)的数10]]
     [[坐标为(200)的数2,坐标为(201)的数8]
      [坐标为(210)的数5,坐标为(211)的数11]]][ [[0,6]
          [3,9]]
         [[1,7]
          [4,10]]
         [[2,8]
          [5,11]]]
    

    够详细吗?按照我的思路,写一遍或者走一遍就能简单理解啦

    展开全文
  • np.transpose()函数详解

    千次阅读 多人点赞 2020-04-23 13:04:21
    1. 碰见 numpy.transpose 用于高维数组时挺让人费解,通过...x = np.arange(12).reshape((2,3,2)) 创建一个2 * 3 * 2的数组: 使用 numpy.transpose ()进行变换,其实就是交换了坐标轴,如:x.transpose(1, 2, 0...

    1. 碰见 numpy.transpose 用于高维数组时挺让人费解,通过分析和代码验证,发现 transpose 用法还是很简单的。说白了就是映射坐标轴

    2. 举个例子:

    x = np.arange(12).reshape((2,3,2))
    

    创建一个2 * 3 * 2的数组:
    在这里插入图片描述
    使用 numpy.transpose ()进行变换,其实就是交换了坐标轴,如:x.transpose(1, 2, 0),其实就是将x第二维度挪到第一维上,第三维移到第二维上,原本的第一维移动到第三维上,最后的shape为:(3,2,2)

    3. 分析原理

    原先的数据的索引和数据对应情况为:

    x[0][0][0] = 0				x[1][0][0] = 6
    x[0][0][1] = 1				x[1][0][1] = 7
    x[0][1][0] = 2				x[1][1][0] = 8
    x[0][1][1] = 3				x[1][1][1] = 9
    x[0][2][0] = 4				x[1][2][0] = 10
    x[0][2][1] = 5				x[1][2][1] = 11
    

    交换数据的索引,对应的值还是不变,即交换了坐标轴,如[0][2][1] —>[2][1][0]

    x[0][0][0] = 0				x[0][0][1] = 6
    x[0][1][0] = 1				x[0][1][1] = 7
    x[1][0][0] = 2				x[1][0][1] = 8
    x[1][1][0] = 3				x[1][1][1] = 9
    x[2][0][0] = 4				x[2][0][1] = 10
    x[2][1][0] = 5				x[2][1][1] = 11
    

    根据变换后的索引进行归类

    [
    	[[0, 6], 
    	 [1, 7]],
    	 
    	[[2, 8],
    	 [3, 9]],
    	 
    	[[4, 10],
    	 [5, 11]]
    ]
    

    4. 再进行深思

    例子中,我们使用的shape是(2, 3, 2),可以理解成:2通道的图片,每张图层是3 * 2大小,正常渲染是先把第一个通道的图片把3 * 2个像素点绘制,在把第二个通道的3 * 2像素绘制。
    在使用transpose(1, 2, 0)后,新的数据是shape是(3,2,2),可以理解成每张图层是3 * 2大小,2通道的图片,原先的是先绘制一个通道数据,如今变换后的数据是每次将一个坐标的不同通道的像素进行一次性绘制。
    如图:
    在这里插入图片描述
    打消了我对transpose影响图片呈现效果的疑虑

    5. 来段代码测试一下,看看变化

    from PIL import Image
    import numpy as np
    import matplotlib.pyplot as plt
    from torchvision import transforms
    %matplotlib inline
    
    
    img_path = "./a.jpg"
    # 对img_torch输出也是原图
    img_torch = transforms.ToTensor()(Image.open(img_path))
    resize = img_torch.numpy().transpose(1,2,0)
    plt.imshow(resize)
    plt.show()
    
    展开全文
  • np.transpose()函数

    万次阅读 2018-05-13 19:39:43
    最近在学习python语言,就平时调试代码的过程中遇到的问题做不定时...以下信息参考了https://blog.csdn.net/xiongchengluo1129/article/details/79017142NOTES:首先时np.transpose(a,axes=NONE),输入是矩阵参数和转...

    最近在学习python语言,就平时调试代码的过程中遇到的问题做不定时的记录。

    今天要说到的是Python里面有关矩阵转置的操作。


    python帮助系统的信息没有实质性的帮助。

    以下信息参考了https://blog.csdn.net/xiongchengluo1129/article/details/79017142

    NOTES:

    首先时np.transpose(a,axes=NONE),输入是矩阵参数和转置参数。


    可以看到,np.transpoe()对于一维数组不起作用。同时我将axes的值改为True会报错。


    二维数组可执行转置操作。


    括号里的(1,0)分别对应原数组里的列和行向量。默认状态是(0,1)

    (1,0)代表将原来的行向量变为列向量,两向量变为行向量

    三维数组对应于二维数组:将(0,1)变成了(0,1,2)。。。。。。


    执行转置操作之后,状态有默认值(0,1,2)变成了(2,1,0)如下图:


    至于具体是怎么实现的就没有管了。。。具体可以参见原博文。



    展开全文
  • np.transpose

    万次阅读 多人点赞 2018-01-09 20:36:41
    最近看代码的时候,老是出现np.transpose()这个用法,但是对其中的原理还是不甚了解,今天就来总结一下,以及这个用法对图像的结果及效果。 参数 a:输入数组 axis: int类型的列表,这个参数是可选的。默认情况...
  • np.transpose()转置函数

    千次阅读 2019-10-18 20:03:48
    最近看代码的时候,老是出现np.transpose()这个用法,但是对其中的原理还是不甚了解,今天就来总结一下,以及这个用法对图像的结果及效果。参数a:输入数组axis:int类型的列表,这个参数是可... ...
  • np.transpose 作用于一维数据,shape只有一个参数 没有效果 tt=np.array([0,1,2,3,4]) ttT=np.transpose(tt) print("ttshape:",tt.shape) print("ttTshape:",ttT.shape) print("------------转置----------------") ...
  • transpose()函数的作用就是调换数组的行列值的索引值,类似于求矩阵的转置 arr.transpose() 我们可以直观的看到,数组的行列索引值对换,1的位置从arr(0,1)跑到了arr(1,0) 三维数组 我们继续生成一个三维...
  • 先来简单总结一下这几个函数np.transpose,np.tile(),np.newaxis 一、np.transpose() 主要参考:0岁的数据分析师的博文,知乎回答 1、“.T”主要适用于一维二维数组,略 2、对于多维数组,我们拿三维数组来看一下...
  • import numpy as np>>> t=np.arange(4) # 插入值0-3>>> tarray([0, 1, 2, 3])>>> t.transpose()array([0, 1, 2, 3])>>>由上可见,对于一维数组而言,numpy.transpose()是不起....
  • torch.transpose函数

    千次阅读 2021-01-14 15:48:57
    torch.transpose(x,dim_1,dim_2)表示将x这个tensor的dim_1和dim_2进行交换,下面举个例子来说明怎么使用这个torch.transpose函数。 In [1]: import torch In [2]: import numpy as np In [3]: a = np.arange(1,25)...
  • 网上关于np.transpose()的函数解释有很多,但没找到有对实际意义的解释。 我的理解是:在pytorch中张量tensor对图象的存储是(b,c,w,h)分别表示(图片数量,通道数,图片高,图片宽)。 单独说tensor中的某张图片,也...
  • Numpy:np.transpose()方法

    2020-07-24 20:32:33
    numpy.transpose(a,axes=None) 反转或排列数组的轴;返回修改后的数组。对于有两个轴的数组a,转置(a)得到矩阵的转置。... np.transpose(x) >> array([[0, 2], [1, 3]]) >> x = np.on..
  • np.transpose(npimg, (1, 2, 0)的作用

    千次阅读 多人点赞 2020-11-27 19:16:36
    在Pytorch的官方文档中这个np.transpose()有点不明白它的含义。 查阅资料后: plt.imshow(np.transpose(npimg, (1, 2, 0)))。...这两者的格式不一致,我们需要调用一次np.transpose函数,即np.transpose(npimg,(1,2,0.
  •   创建一个2×3×4(深度×行×列)的三维数组: import numpy as np a=np.arange(24).reshape...  注意: reshape函数中第一个参数2代表深度,第二个参数3代表行,第三个参数4代表列。   在坐标系中可以理解为: )
  • 最近看python的时候对numpy中的transpose这个函数比较疑惑,通过查看其他博主的解答,自己进一步找了一下规律,现在感觉清楚多了。具体的步骤如下: 首先先建立一个 2x3x4 的多维数组 这个数组是三维的,这个应该...
  • 看Python的Numpy库的时候,被 numpy.transpose 函数用于高维数组搞的一头雾水,不明白原理,通过手动分析和代码验证,发现 transpose 的具体用法。 transpose 作用是改变序列,下面是一些小例子: 在不添加参数的...
  • 最近看代码的时候,老是出现np.transpose()这个用法,但是对其中的原理还是不甚了解,今天就来总结一下,以及这个用法对图像的结果及效果。 参数 a:输入数组 axis: int类型的列表,这个参数是可选的。默认情况下,...
  • np.transpose 改变维度索引值 比如下面这个例子,n是一个三维数组,第0维度与第1维度互换了 np.nonzero nonzero函数是numpy中用于得到数组array中非零元素的位置(数组索引)的函数 示例 n = numpy.array([4,3,2,1]...
  • python中numpy.transpose()函数详解

    千次阅读 2020-01-06 21:06:13
    看Python代码时,碰见 numpy.transpose 函数用于高维数组时不明白原理,通过一番画图分析和代码验证,发现 transpose 用法可以清晰地介绍给大家。 transpose 作用是改变序列,下面是一些小例子: 代码1: x = np...
  • 这几天看了一个BP神经网络的代码,发现有个地方:y = np.array([[0,1,1,0]]).T百度一下才发现这个T是transpose这个单词的开头,效果呢就和transpose是一样的接下来看一下transpose的例子:>>> two=np.arange...
  • 二维情况例如以下代码:x = np.arange(4).reshape((2,2))输出:x = ([[0, 1],[2, 3]])对于二维的数组,np.transpose()即为将矩阵进行转置的意思 PS:对于矩阵的维度的表示:n∗m∗ln*m*ln∗m∗l:有多少个数据相乘...
  • tf.transpose transpose( a, perm=None, name='transpose' ) Defined in tensorflow/python/ops/array_ops.py. See the guides: Math > Matrix Math Functions, Tensor Transformations > Slicing and Joining ...
  • 参考链接: numpy.transpose numpy.transpose(a, axes=None)用来调整多维数组的不同轴,默认情况下是对轴进行反转,因此对于二维矩阵,默认情况下是进行转置. 同时也可以使用axes参数,对某几个轴进行调整. Python 3.7.4...
  • NumPy(Numerical Python的缩写)是一个开源的Python科学计算库。使用NumPy,就可以很自然地使用数组和矩阵。NumPy包含很多实用的数学函数,涵盖线性代数运算、...原文地址:Python numpy.transpose函数方法的使用 ...
  • numpy.ndarray.transpose

    2021-06-11 21:26:59
    一、ndarray.transpose的官方文档: ndarray.transpose(*axes) Returns a view of the array with axes transposed. //返回对array进行维度转置后的结果 For a 1-D array this has no effect, as a transposed ...
  • [1]numpy中的transpose函数使用方法 - 学弟1 - 博客园 (cnblogs.com) 说明:本文的图片与代码基本改编或引用自'numpy中的transpose函数使用方法 - 学弟1 - 博客园 (cnblogs.com)' 1 二维数组 二维数组执行...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,841
精华内容 7,536
关键字:

np.transpose函数