什么"维度"对于一个numpy数组意味着什么?

时间:2015-12-03 23:04:24

标签: python numpy

我仍然是scikit-learn和numpy的新手。 我阅读了教程,但我无法理解他们如何定义数组维度。

在以下示例中:

>>> import numpy as np
>>> a = np.arange(15).reshape(3, 5)
>>> a
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])
>>> a.shape
(3, 5)
>>> a.ndim
2

数组每行有五个变量,所以我希望它有5个维度。

为什么a.ndim等于2?

3 个答案:

答案 0 :(得分:0)

Dimension表示a.shape元组的长度。 ndarray的形状是(3,5),因为它有3行和5列。这正是你试图找到的,不是吗?

答案 1 :(得分:0)

我误认为Frame和Array,数组是通过如何查找数字,查找数字的步数来判断的,在这种情况下,您需要找到该行然后找到该行。但在Frame中,对于一个实例,此实例拥有一行,并且其中的所有行描述了其属性,或称为变量或维度以定义实例。在Frame中,您可以使用二维数组来定义多维实例。
Array
1 4 5
2 3 6
所以你会找到这个数字的两个步骤,就像你可以找到[] []来找到 但在框架中           Length    Height    Weight
1        23           34           56
2        89           87           63
这是一个框架,实际上是一个三维“数组”,但它不是一个数组。

答案 2 :(得分:0)

鉴于你正在使用scikit学习,我将在机器学习的背景下解释这一点,因为它可能更有意义......

你的特征矩阵(我假设你在这里所说的)通常是二维的(因此为什么ndim = 2),因为你有行(占据一维)和列(占据第二个维度)

在机器学习案例中,我通常将行视为样本,将列视为特征。

但请注意,每个维度可以包含多个条目(例如,您将拥有多个样本/行和多个列/要素)。这会告诉您该维度的大小。

所以在你的情况下:

>>> a
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])
>>> a.shape
(3, 5)
>>> a.ndim
2

您有一个长度/大小为3的维度。第二个维度有5个条目。例如,您可以将其视为包含3个样本和5个特征/变量的特征矩阵。

总而言之,您有2个维度(ndim = 2),但数组的特定大小由形状元组表示,它告诉您每个维度的大小。

此外,(3,5,2)将是具有3维的矩阵,其中第3维具有2个值

我认为这里的关键,至少在二维情况下,是不要把它想象成嵌套列表或嵌套向量(当你考虑[]时它就是这样)但只是想想它作为一个包含行和列的表。当您想到数据结构时,shape元组和ndim会更有意义