我是新手使用NumPy并尝试使用数组,尝试构建1D,2D和现在的3D数组。但我不确定为什么ndim认为这是一个2D数组,即使它有3行
In [26]: c= array ([[1,1,1,1],[2,2,2,2],[3,3,3,3]])
In [27]: c
Out[27]:
array([[1, 1, 1, 1],
[2, 2, 2, 2],
[3, 3, 3, 3]])
In [28]: c.ndim
Out[28]: 2
这个显示为3D数组。分组如何在3D阵列中工作?
In [30]: d= array([[[1], [2]], [[3], [4]]])
In [31]: d
Out[31]:
array([[[1],
[2]],
[[3],
[4]]])
In [32]: d.ndim
Out[32]: 3
答案 0 :(得分:3)
查看您传递给array
构造函数的嵌套列表。你会用什么样的表达来检索一个元素?
A[i][j] # This?
A[i][j][k] # Or this?
如果是第一个选项,则您有一个2D数组。如果它是第二个选项,那么你有一个3D数组。您需要的索引数是数组的维数。它与其中有多少行或列无关。
答案 1 :(得分:0)
尺寸与物品不同。在您的情况下,您可以通过询问长度来检查是否有二维数组
len(c)
会给你3,因为你在顶部索引c有3个元素。如果你想检查前三者中每个元素的数量,你可以这样做
len(c[0])
len(c[1])
len(c[2])
这将给你3.然后你可以做c [0] [0]。但是,如果你尝试
len(c[0][0][0])
您将收到错误,因为索引c [0] [0] [0]不是列表或数组,因此无法编入索引。
自
以来,您可以将3维的第二个示例编入索引d [0] [0] [0](*FIRST*[*SECOND*[*THIRD*[1],[2]],[[3],[4]]])
其中FIRST是d,第二个是d [0],第三个是d [0] [0]
答案 2 :(得分:0)
尺寸取决于分组数量,而不是行数。第一个例子是一个数组数组,所以它是2D。第二个是数组数组(其中包含1个数字),因此它是3D。
答案 3 :(得分:0)
你不是在谈论维度。我想你正在寻找形状:
In [8]: c.shape
Out[8]: (3, 4)
它为您提供行和列。
In [9]: c.ndim
Out[9]: 2
提供可以索引/下标的维数。如果您有一个小的像素光栅作为2D,则3D将是一个体素体积。