我正在尝试将头部包裹在3D阵列(或通常为多维阵列)周围,但是这让我有些不解。特别是3D numpy数组的打印方式对我来说是违反直觉的。这个问题是similar,但更多地是关于编程语言之间的差异,我仍然没有完全理解它。让我尝试解释一下。
说我想创建一个3行(长度),5列(宽度)和2深度的3D数组。因此是3x5x2的矩阵。
我执行以下操作:
(u'tomorrow', 20, 28, u'DATE')
(u'France', 32, 38, u'GPE')`
对我来说,打印此内容的逻辑方法是这样的:
import numpy as np
a = np.zeros(30).reshape(3, 5, 2)
但是,当我打印该数组时,它的打印方式如下:
[[[0. 0. 0. 0. 0.] #We can still see three rows from top to bottom
[0. 0. 0. 0. 0.]] #We can still see five columns from left to right
[[0. 0. 0. 0. 0.] #Depth values are shown underneath each other
[0. 0. 0. 0. 0.]]
[[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]]]
对于我来说,为什么以这种方式打印数组并不明显。也许只是我(也许这里缺少我的空间推理),还是有特定的原因为什么会这样打印NumPy数组?
答案 0 :(得分:0)
将评论综合为正确的答案:
首先,查看np.zeros(10).reshape(5, 2)
。那是5行2列,而不是2行5列。在前面加3表示5行2列的3个平面。您缺少的是您的新维度位于 front 而不是末尾。在数学中,通常会在最后添加额外的维数(就像用az扩展(x,y)一样变成(x,y,z)。但是,在计算机科学中,数组维数通常是通过这种方式完成的,这反映了数组的方式通常以行优先顺序存储在内存中。