Joh*_*ohn 3 python transpose numpy
这是什么意思?
data.transpose(3, 0, 1, 2)
Run Code Online (Sandbox Code Playgroud)
另外,如果data.shape == (10, 10, 10)
,为什么我会得到ValueError: axes don't match array
?
我用Python3来讨论一下。
我在Python中使用转置函数作为
data.transpose(3, 0, 1, 2)
这是错误的,因为此操作需要 4 个维度,而您只提供 3 个维度(如 中所示(10,10,10)
)。可重现为:
>>> 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
Run Code Online (Sandbox Code Playgroud)
如果图像批次为 1,您可以简单地通过将 (10,10,10) 重塑为 (1,10,10,10) 来添加另一个维度。这可以通过以下方式完成:
>>> 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
Run Code Online (Sandbox Code Playgroud)
3、0、1、2是什么意思?
对于 2D numpy 数组,transpose
数组(矩阵)的操作正如其名称所示。但对于像你这样的高维数组,它基本上就像moveaxis
.
>>> a = np.arange(60).reshape((4,5,3))
>>> b = a.transpose((2,0,1))
>>> b.shape
(3, 4, 5)
>>> c = np.moveaxis(a,-1,0)
>>> c.shape
(3, 4, 5)
>>> b
array([[[ 0, 3, 6, 9, 12],
[15, 18, 21, 24, 27],
[30, 33, 36, 39, 42],
[45, 48, 51, 54, 57]],
[[ 1, 4, 7, 10, 13],
[16, 19, 22, 25, 28],
[31, 34, 37, 40, 43],
[46, 49, 52, 55, 58]],
[[ 2, 5, 8, 11, 14],
[17, 20, 23, 26, 29],
[32, 35, 38, 41, 44],
[47, 50, 53, 56, 59]]])
>>> c
array([[[ 0, 3, 6, 9, 12],
[15, 18, 21, 24, 27],
[30, 33, 36, 39, 42],
[45, 48, 51, 54, 57]],
[[ 1, 4, 7, 10, 13],
[16, 19, 22, 25, 28],
[31, 34, 37, 40, 43],
[46, 49, 52, 55, 58]],
[[ 2, 5, 8, 11, 14],
[17, 20, 23, 26, 29],
[32, 35, 38, 41, 44],
[47, 50, 53, 56, 59]]])
Run Code Online (Sandbox Code Playgroud)
显然,这两种方法的工作原理是相同的。
归档时间: |
|
查看次数: |
18703 次 |
最近记录: |