Python 转置(3,0,1,2)是什么意思?

Python 转置(3,0,1,2)是什么意思?,python,numpy,transpose,Python,Numpy,Transpose,这是什么意思 data.transpose(3, 0, 1, 2) 另外,如果data.shape==10,10,10,为什么我会得到ValueError:轴与数组不匹配?方法transpose接受数组作为参数,所以 data.transpose([3,0,1,2]) 会有用的。参考:方法转置接受数组作为参数 data.transpose([3,0,1,2]) 会有用的。参考资料:看看 使用transposeSea、argsortaxes反转张量的转置 使用axes关键字参数时 转置一

这是什么意思

data.transpose(3, 0, 1, 2)

另外,如果data.shape==10,10,10,为什么我会得到ValueError:轴与数组不匹配?

方法transpose接受数组作为参数,所以

data.transpose([3,0,1,2]) 

会有用的。参考:

方法转置接受数组作为参数

data.transpose([3,0,1,2]) 
会有用的。参考资料:

看看

使用transposeSea、argsortaxes反转张量的转置 使用axes关键字参数时

转置一维数组将返回原始数组的不变视图 数组

e、 g

看看

使用transposeSea、argsortaxes反转张量的转置 使用axes关键字参数时

转置一维数组将返回原始数组的不变视图 数组

e、 g


在转置中指定的值太多

>>> a = np.arange(8).reshape(2,2,2)
>>> a.shape (2, 2, 2)
>>> a.transpose([2,0,1])
array([[[0, 2],
        [4, 6]],

       [[1, 3],
        [5, 7]]])
>>> a.transpose(3,0,1,2) Traceback (most recent call last):   File "<interactive input>", line 1, in <module> ValueError: axes don't match array
>>>

在转置中指定的值太多

>>> a = np.arange(8).reshape(2,2,2)
>>> a.shape (2, 2, 2)
>>> a.transpose([2,0,1])
array([[[0, 2],
        [4, 6]],

       [[1, 3],
        [5, 7]]])
>>> a.transpose(3,0,1,2) Traceback (most recent call last):   File "<interactive input>", line 1, in <module> ValueError: axes don't match array
>>>

在上的python文档中,np.transpose函数的第二个参数是axes,它是int的列表,可选 默认情况下,反转尺寸标注,否则排列轴 根据给定的值

例如:

>>> x = np.arange(9).reshape((3,3))
>>> x
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])

>>> np.transpose(x, (0,1))
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])

>>> np.transpose(x, (1,0))
array([[0, 3, 6],
       [1, 4, 7],
       [2, 5, 8]])

在上的python文档中,np.transpose函数的第二个参数是axes,它是int的列表,可选 默认情况下,反转尺寸标注,否则排列轴 根据给定的值

例如:

>>> x = np.arange(9).reshape((3,3))
>>> x
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])

>>> np.transpose(x, (0,1))
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])

>>> np.transpose(x, (1,0))
array([[0, 3, 6],
       [1, 4, 7],
       [2, 5, 8]])

该操作将样本、行、列、通道转换为样本、通道、行、列、列,可能是opencv到pytorch。

该操作将样本、行、列、通道转换为样本、通道、行、列,可能是opencv到pytorch。

问题是您已经获取了一个三维矩阵并应用了一个四维转置。 您的命令是将4d矩阵batch、rows、cols、channel转换为另一个4d矩阵rows、cols、channel、batch,但您需要一个命令来转换3d矩阵。因此,删除3并写入
data.transpose2,0,1。

问题是你已经得到了一个三维矩阵,并应用了一个四维转置。 您的命令是将4d矩阵batch、rows、cols、channel转换为另一个4d矩阵rows、cols、channel、batch,但您需要一个命令来转换3d矩阵。因此,删除3并写入
data.transpose2,0,1.

让我用Python3来讨论

我使用python中的transpose函数作为data.transpose3,0,1,2

这是错误的,因为此操作需要4个维度,而在10,10,10中只提供3个维度。可复制为:

>>> a = np.arange(60).reshape((1,4,5,3))
>>> b = a.transpose((2,0,1))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: axes don't match array
3,0,1,2是什么意思

对于2D numpy数组,数组矩阵的转置操作正如名称所示。但对于像您这样的高维数组,它基本上是作为moveaxis工作的


很明显,这两种方法都是一样的。

让我用Python3来讨论一下

我使用python中的transpose函数作为data.transpose3,0,1,2

这是错误的,因为此操作需要4个维度,而在10,10,10中只提供3个维度。可复制为:

>>> a = np.arange(60).reshape((1,4,5,3))
>>> b = a.transpose((2,0,1))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: axes don't match array
3,0,1,2是什么意思

对于2D numpy数组,数组矩阵的转置操作正如名称所示。但对于像您这样的高维数组,它基本上是作为moveaxis工作的

显然,两种方法的工作原理相同。

将数组的维度从形状a、b、c、d重新排序为d、a、b、c:

将数组的维度从形状a、b、c、d重新排序为d、a、b、c:


谢谢,如果我的数据是3,3,3,2,那么什么是数据。transpose3,0,1,2的意思是什么?没有提到实际问题。。。3.0.1.2Hey@Jarvis我的意思是这个问题有两个部分;你的回答只是暗示了其中一个。我试图提供另一个答案。否决投票的目的只是为了提高问题答案的质量。作者接受了你的答案,但这并不能掩盖你的答案几乎没有投票权的事实。下次请保持谦虚。让我们创建一个更好的社区:谢谢,如果我的数据是3,3,3,2,那么什么是数据。transpose3,0,1,2的意思是什么?没有提到实际问题。。。3.0.1.2Hey@Jarvis我的意思是这个问题有两个部分;你的回答只是暗示了其中一个。我试图提供另一个答案。否决投票的目的只是为了提高问题答案的质量。作者接受了你的答案,但这并不能掩盖你的答案几乎没有投票权的事实。下次请保持谦虚。让我们让它成为一个更好的社区:这个答案是不正确的。np.zeros0,1,2,3。转置3,0,1,2。形状实际上等于3,0,1,2。这个答案是不正确的。np.zeros0,1,2,3.transpose3,0,1,2.shape实际上等于3,0,1,2。