精华内容
下载资源
问答
  • 成功解决:python 矩阵转置
    2021-11-24 17:03:37
    import numpy as np
    
    np.transpose([list])    # 矩阵转置
    
    更多相关内容
  • 今天小编就为大家分享一篇Python 矩阵转置的几种方法小结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • python 矩阵转置

    2022-02-11 19:56:20
    python 矩阵转置 matrix = [ ... [1, 2, 3, 4], ... [5, 6, 7, 8], ... [9, 10, 11, 12], ... ] 以下实例将3X4的矩阵列表转换为4X3列表: [[row[i] for row in matrix] for i in range(4)] [[1, 5, 9], [2, 6, 10],...

    python 矩阵转置

    matrix = [
    ...     [1, 2, 3, 4],
    ...     [5, 6, 7, 8],
    ...     [9, 10, 11, 12],
    ... ]
    

    以下实例将3X4的矩阵列表转换为4X3列表:

    [[row[i] for row in matrix] for i in range(4)]
    [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
    
    >>> transposed = []
    >>> for i in range(4):
    ...     transposed.append([row[i] for row in matrix])
    ...
    >>> transposed
    [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
    
    >>> transposed = []
    >>> for i in range(4):
    ...     # the following 3 lines implement the nested listcomp
    ...     transposed_row = []
    ...     for row in matrix:
    ...         transposed_row.append(row[i])
    ...     transposed.append(transposed_row)
    ...
    >>> transposed
    [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
    
    展开全文
  • 下面小编就为大家分享一篇对python 矩阵转置transpose的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 最近看代码的时候,老是出现np.transpose()这个用法,但是对其中的原理还是不甚了解,今天就来总结一下,以及这个用法对...返回值 p:ndarray 返回转置过后的原数组的视图。给大家举个例子。对于一维数组:>>&...

    最近看代码的时候,老是出现np.transpose()这个用法,但是对其中的原理还是不甚了解,今天就来总结一下,以及这个用法对图像的结果及效果。

    155d500eaa6358dd299a792be937961c.png

    参数 a:输入数组

    axis: int类型的列表,这个参数是可选的。默认情况下,反转的输入数组的维度,当给定这个参数时,按照这个参数所定的值进行数组变换。

    返回值 p:ndarray 返回转置过后的原数组的视图。

    给大家举个例子。

    对于一维数组:

    >>> import numpy as np

    >>> t=np.arange(4)

    >>> t

    array([0, 1, 2, 3])

    >>> t.transpose()

    array([0, 1, 2, 3])

    >>>

    1

    2

    3

    4

    5

    6

    7

    由上可见,对于一维数组而言,numpy.transpose()是不起作用的。

    对于二位数组:

    >>> two=np.arange(16).reshape(4,4)

    >>> two

    array([[ 0, 1, 2, 3],

    [ 4, 5, 6, 7],

    [ 8, 9, 10, 11],

    [12, 13, 14, 15]])

    >>> two.transpose()

    array([[ 0, 4, 8, 12],

    [ 1, 5, 9, 13],

    [ 2, 6, 10, 14],

    [ 3, 7, 11, 15]])

    >>> two.transpose(1,0)

    array([[ 0, 4, 8, 12],

    [ 1, 5, 9, 13],

    [ 2, 6, 10, 14],

    [ 3, 7, 11, 15]])

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    有以上可见,原数组two的数组两个轴为(x,y),对应的下标为(0,1),np.transpose()传入的参数为(1,0),即将原数组的x,y轴互换。综上,对二维数组的transpose操作就是对原数组的转置操作。

    对于三维数组:先看一个例子。

    >>> three=np.arange(18).reshape(2,3,3)

    >>> three

    array([[[ 0, 1, 2],

    [ 3, 4, 5],

    [ 6, 7, 8]],

    [[ 9, 10, 11],

    [12, 13, 14],

    [15, 16, 17]]])

    >>> three.transpose()

    array([[[ 0, 9],

    [ 3, 12],

    [ 6, 15]],

    [[ 1, 10],

    [ 4, 13],

    [ 7, 16]],

    [[ 2, 11],

    [ 5, 14],

    [ 8, 17]]])

    >>>

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    这是numpy.transpose()函数对three数组默认的操作,即将原数组的各个axis进行reverse一下,three原始axis排列为(0,1,2),那numpy.transpose()默认的参数为(2,1,0)得到转置后的数组的视图,不影响原数组的内容以及大小。

    我们一步一步来分析这个过程:axis(0,1,2)———>axis(2,1,0) ,transpose后的数组相对于原数组来说,相当于交换了原数组的0轴和2轴。

    #对原始three数组的下标写出来,如下:

    A=[

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

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

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

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

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

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

    ]

    #接着把上述每个三元组的第一个数和第三个数进行交换,得到以下的数组

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

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

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

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

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

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

    #最后在原数组中把B对应的下标的元素,写到相应的位置

    #对比看一下,这是原数组

    [[[ 0, 1, 2],

    [ 3, 4, 5],

    [ 6, 7, 8]],

    [[ 9, 10, 11],

    [12, 13, 14],

    [15, 16, 17]]]

    # 按照B的映射关系得到最终的数组。

    C=[[[ 0, 9],

    [ 3, 12],

    [ 6, 15]],

    [[ 1, 10],

    [4, 13],

    [7, 16]]

    [[ 2, 11],

    [5, 14],

    [8, 17]]

    ]

    # 最终的结果也就是数组C

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    那么我们知道了旋转的矩阵结果,那么在深度学习中为什么要这么旋转图片矩阵,以及这样做的意义及效果又是什么,我们可以继续往下探讨。

    在mnist数据集中,挑出一张照片进行不同的transpose变换,观察得到的图片的形状。

    下面举一个例子,数据集为4张图片:

    5718047f5f43df4d41efc64852230b09.png

    四张图片分别代表“0”、“0”、“4”、“8”

    处理的代码为:

    import numpy as np

    from PIL import Image

    import os

    data = np.empty((4, 20, 20), dtype="uint8")

    imgs = os.listdir("E:\Kerasmnist/train\some")

    num = len(imgs)

    for i in range(num):

    img = Image.open("E:\Kerasmnist/train\some/" + imgs[i])

    img.show()

    arr = np.asarray(img, dtype="uint8")

    data[i, :, :] = arr

    convert=data.transpose(2,1,0)

    for k in range(len(convert[0])):

    img2=Image.fromarray(convert[k])

    img2.show()

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    目前没发现有什么奇妙之处,这个问题先放在这里,过些日子再继续探讨吧,See you

    >>> arr = np.arange(16).reshape((2, 2, 4))

    >>> arr

    array([[[ 0, 1, 2, 3],

    [ 4, 5, 6, 7]],

    [[ 8, 9, 10, 11],

    [12, 13, 14, 15]]])

    >>> arr.transpose((1,0,2))

    array([[[ 0, 1, 2, 3],

    [ 8, 9, 10, 11]],

    [[ 4, 5, 6, 7],

    [12, 13, 14, 15]]])

    >>> arr.transpose((0,2,1))

    array([[[ 0, 4],

    [ 1, 5],

    [ 2, 6],

    [ 3, 7]],

    [[ 8, 12],

    [ 9, 13],

    [10, 14],

    [11, 15]]])

    >>> arr.transpose((1,2,0))

    File "", line 2

    arr.transpose((1,2,0))

    ^

    IndentationError: unexpected indent

    >>> arr.transpose((1,2,0))

    array([[[ 0, 8],

    [ 1, 9],

    [ 2, 10],

    [ 3, 11]],

    [[ 4, 12],

    [ 5, 13],

    [ 6, 14],

    [ 7, 15]]])

    >>>

    展开全文
  • python矩阵转置

    2020-12-15 10:10:25
    想要对矩阵进行转置 import numpy as np import pandas as pd x = np.array([[1,2,3],[4,5,6]]) y = x.T print(y) [[1 2 3] [4 5 6]]

    想要对矩阵进行转置

    import numpy as np
    import pandas as pd
    
    x = np.array([[1,2,3],[4,5,6]])
    y = x.T
    print(y)
    
    [[1 2 3]
     [4 5 6]]
    

    注意,必须对矩阵规范编辑。
    例如

    x = np.array([1,2,3])
    print(x.T)
    out:[1 2 3]
    

    这样输出依然是一行三列数组,这是由于输入的数据不规范,python是默认了把1,2,3排为一行。
    实际的规范输入应该是

    x = np.array([[1,2,3]])
    print(x.T)
    [[1]
     [2]
     [3]]
    

    即在设置一个矩阵的时候规范的写法应该是先有括号再填入【行内容】。

    新手出的错误,记录一下

    展开全文
  • 普通最小二乘法 (OLS) 是一种在简单线性回归中估计参数 β 的方法,Xβ = y,其中 X 是特征矩阵,y 是因变量(或目标),通过最小化给定数据集中观察到的因变量与线性函数预测的因变量之间的差异。 那么话不多说...
  • Python中的矩阵转置方法有如下几种: 使用双重循环做(最直接,最本质的方法) import random row = 3 column = 4 array = [[random.randint(0, 10) for _ in range(column) ]for _ in range(row)] print("砸门先...
  • Python矩阵转置方法大全

    万次阅读 2018-11-06 08:41:37
    文章目录矩阵转置 矩阵转置 matric = [[2, 2, 8], [0, 4, 0]] transpose = [[matric[j][i] for j in range(len(matric))] for i in range(len(matric[0]))] print(transpose) [[2, 0], &...
  • python矩阵的实现是靠序列,,,序列有很多形式,其实...下面给出一个把矩阵转换成python中的序列、然后进行矩阵转置# -*- coding: utf-8 -*-#下面的测试是关于转置的。import numpy as np #NumPyminVals=np.a...
  • 主要介绍了Python实现的矩阵转置与矩阵相乘运算,结合实例形式分析了Python针对矩阵进行转置与相乘运算的相关实现技巧与操作注意事项,需要的朋友可以参考下
  • 矩阵转置 用zip将一系列可迭代对象中的元素打包为元组,之后将这些元组放置在列表中,两步加起来等价于行列转置。 # 矩阵逆转 def invert(list1): return [row[::-1] for row in list1] list1 = [[1, 4],
  • 本文实例讲述了Python实现矩阵转置的方法。分享给大家供大家参考,具体如下: 前几天群里有同学提出了一个问题:手头现在有个列表,列表里面两个元素,比如[1, 2],之后不断的添加新的列表,往原来相应位置添加。...
  • 我试图为python创建一个矩阵转置函数,但我似乎无法使它工作。 说我有 thearray = ,] 矩阵如下: newarray = ,] 换句话说,如果我将这个2d数组打印为列和行,我希望行变成列,列变成行。 def matrixtranspose(an...
  • 如果你对Python矩阵转置的实际应用操作方案的转置不知道如何进行下一步时,你就你需要转置一个二维数组,将Python矩阵转置的行列互换.这样就可以完成你所需要的应用操作,以下是文章的具体操作。你需要转置一个二维...
  • [Running] python -u "j:\python\matrix.py" [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]] [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]] [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]  ...
  • 下为几种常见的矩阵转置方法: 方法一:(直接法) #step1: #初始化原始矩阵 matrix = [[1,2,3,4], [5,6,7,8], [9,10,11,12]] #通过函数指出矩阵的行与列 row = len(matrix) col = len(matrix[0]) #step2: #...
  • python矩阵转置transpose的实例讲解在读图片时,会用到这么的一段代码:image_vector_len = np.prod(image_size)#总元素大小,3*55*47img = Image.open(path)arr_img = np.asarray(img, dtype='float64')arr_img =...
  • 所以最终,这个题目(转置矩阵)的python解法就相当奇妙了: def trans(m): return list(zip(*m)) 没错,就这么简单。python的魅力。 python3 中zip()函数 zip() 函数用于将可迭代的对象作为参数,将对象中对应的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,691
精华内容 8,676
关键字:

python矩阵转置

友情链接: cloud.rar