0

我正在学习 numpy ,我心中有一个问题,无法清楚地看到这个 1 的形状

import numpy as np

a = np.array([ [[1],[56]] , [[8],[98]] ,[[89],[62]] ])
np.shape(a)

输出打印为:(3 ,2 , 1)

如果您能以图表/图像格式表示将不胜感激 1 在输出中的实际含义

4

1 回答 1

1

基本上,最后一个 1 是因为其中的每个数字a都有括号。

形式上,它是“最后”或“最里面”维度的长度。您可以采用前两个维度并a像普通矩阵一样排列,但请注意每个元素本身都有括号 - 每个元素本身就是一个数组:

[[ [1] [56]]
 [ [8] [98]]
 [[89] [62]]]

如果您向每个最内层数组添加一个元素,使第三个shape数字变大,这就像在 3d 中在最上面的数组后面堆叠更多数组,现在“后面”数组中的对应元素与“前”数组。

等效地,您可以考虑后两个索引来表示常规平面矩阵,而不是考虑两个索引来表示平面矩阵。这就是 numpy 的做法:尝试打印出这样的数组:. 沿着第一个维度,、和一个接一个地打印,并且每个单独的格式都像 3x3 矩阵一样。然后第二个索引对应于每个单独矩阵的,第三个索引对应于。请注意,当您打印时,只显示一列 - 它的第三维大小为 1。您可以使用 的定义来查看更多信息(更改x = np.random.randint(10, size = (3,3,3))x[0]x[1]x[2]axsize争论)。

以这种方式可视化 3d 数组的一个很好的例子是这张图片,可以在 Wikipedia 页面上找到Levi-Civita 符号

3D Levi-Civita 符号的可视化

不要太担心 Levi-Civita 符号实际上什么- 只需注意这里,如果它是一个 numpy 数组,它将具有形状(3,3,3)(就像x我在上面定义的那样)。您使用三个索引来指定每个元素ijki告诉你深度(蓝色、红色或绿色),j告诉你行,k告诉你列。当 numpy 打印时,它只会依次列出蓝色、红色和绿色。

于 2021-11-16T08:54:57.827 回答