NumPy数组分组?

时间:2014-01-27 02:31:24

标签: python numpy scipy

我是新手使用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

4 个答案:

答案 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将是一个体素体积。