我正在学习 numpy ,我心中有一个问题,无法清楚地看到这个 1 的形状
import numpy as np
a = np.array([ [[1],[56]] , [[8],[98]] ,[[89],[62]] ])
np.shape(a)
输出打印为:(3 ,2 , 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]
a
x
size
争论)。
以这种方式可视化 3d 数组的一个很好的例子是这张图片,可以在 Wikipedia 页面上找到Levi-Civita 符号:
不要太担心 Levi-Civita 符号实际上是什么- 只需注意这里,如果它是一个 numpy 数组,它将具有形状(3,3,3)
(就像x
我在上面定义的那样)。您使用三个索引来指定每个元素i、j和k。i告诉你深度(蓝色、红色或绿色),j告诉你行,k告诉你列。当 numpy 打印时,它只会依次列出蓝色、红色和绿色。