从Numpy的教程中,轴可以用整数编制索引,就像0用于列,1用于行,但我不明白为什么它们以这种方式编入索引?在处理多维数组时,如何计算每个轴的索引?
In [28]: arr = np.arange(16).reshape((2, 2, 4))
In [29]: arr
Out[29]:
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7]],
[[ 8, 9, 10, 11],
[12, 13, 14, 15]]])
In [32]: arr.transpose((1, 0, 2))
Out[32]:
array([[[ 0, 1, 2, 3],
[ 8, 9, 10, 11]],
[[ 4, 5, 6, 7],
[12, 13, 14, 15]]])
Run Code Online (Sandbox Code Playgroud)
当我们将一个整数元组传递给transpose()函数时,会发生什么?
具体来说,这是一个3D数组:当我传递轴的元组时,NumPy如何转换数组(1, 0 ,2)?你能解释一下这些整数所指的行或列吗?在NumPy的背景下,轴数是多少?
Python和Numpy的新手,尝试创建三维数组.我的问题是,与Matlab相比,维度的顺序是关闭的.事实上,订单根本没有意义.
创建矩阵:
x = np.zeros((2,3,4))
Run Code Online (Sandbox Code Playgroud)
在我的世界中,这应该产生2行,3列和4个深度维度,它应该表示为:
[0 0 0 [0 0 0 [0 0 0 [0 0 0
0 0 0] 0 0 0] 0 0 0] 0 0 0]
Run Code Online (Sandbox Code Playgroud)
分离每个深度尺寸.相反,它被呈现为
[0 0 0 0 [0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0] 0 0 0 0]
Run Code Online (Sandbox Code Playgroud)
即,3行,4列和2个深度尺寸.也就是说,第一个维度是"深度".为了进一步添加这个问题,使用OpenCV导入图像颜色维度是最后一个维度,也就是说,我将颜色信息视为深度维度.如果我想做的就是在已知的较小的三维阵列上尝试某些东西,这会使事情变得非常复杂.
我误解了什么吗?如果没有,为什么使用这种不直观的3D维阵列工作方式会让人感到沮丧?