【问题标题】:What does "dimensionality" mean for a numpy array?numpy 数组的“维数”是什么意思?
【发布时间】:2015-12-03 23:04:24
【问题描述】:

我还是 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?

【问题讨论】:

  • 这是[[array 显示开头的编号。
  • a.ndim == len(a.shape)
  • 我把Frame和Array搞错了,判断array是怎么找数字,多少步才能找到数字,这种情况下需要先定位行,再定位行。但是在Frame中,例如,这个实例拥有一行,并且其中的所有行都描述了它的属性,或者称为变量,或者定义实例的维度。在Frame中,可以使用二维数组来定义多维实例。
  • 不要忘记 numpy 处理 n 维数组;例如a = np.arange(60).reshape(3, 4, 5)a.ndim = 3

标签: python numpy


【解决方案1】:

鉴于您使用的是 scikit learn,我将在机器学习的背景下对此进行解释,因为它可能更有意义...

您的特征矩阵(我假设这就是您在这里谈论的内容)通常是二维的(因此为什么 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),但数组的具体大小由 shape tuple 表示,它告诉您 2 个维度中每个维度的大小。

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

我认为这里的关键是,至少在二维情况下,不要将其视为嵌套列表或嵌套向量(当您考虑 [] 时,它看起来就是这样),而只是想到它作为具有行和列的表。当您以这种方式考虑数据结构时,shape 元组和ndim 会更有意义

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      我把Frame和Array搞错了,array是根据怎么找数字来判断的,多少步才能找到数字,这种情况下需要先定位行,再定位行。但是在Frame中,例如,这个实例拥有一行,并且其中的所有行都描述了它的属性,或者称为变量,或者定义实例的维度。在 Frame 中,您可以使用二维数组来定义多维实例。
      Array
      1 4 5
      2 3 6
      因此,您将通过两个步骤找到号码,就像您可以通过 [][] 进行定位
      但在框架中
                Length    Height    Weight
      1        23           34           56
      2        89           87           63
      这是一个框架,实际上是一个 3 维“数组”,但它不是一个数组。

      【讨论】:

      • Frames 使用什么语言?我想知道这种混淆是否与 Python(或 MATLAB)以外的计算机语言或英语(法语?)以外的语言有关。
      • numpy 中,您通常使用a[i, j] 来索引二维数组,尽管a[i][j] 通常也可以。
      • 你说的是pandas数据帧吗?
      猜你喜欢
      • 2010-12-14
      • 2015-07-04
      • 2014-01-31
      • 2020-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-11
      • 1970-01-01
      相关资源
      最近更新 更多