【问题标题】:About Numpy shape关于 Numpy 形状
【发布时间】:2017-02-26 05:18:03
【问题描述】:

我是 numpy 新手,对此有疑问:

根据 docs.scipy.org,“shape”方法是“数组的维度。对于具有 n 行 m 列的矩阵,shape 将为 (n,m)”

假设我要创建一个简单的数组,如下所示:

np.array([[0,2,4],[1,3,5]])

使用“shape”方法,返回 (2,3)(即数组有 2 行 3 列)

但是,对于一个数组 ([0,2,4]),shape 方法将返回 (3,)(这意味着根据上面的定义它有 3 行)

我很困惑:数组 ([0,2,4]) 应该有 3 列而不是 3 行,所以我希望它返回 (,3)。

谁能帮忙澄清一下?非常感谢。

【问题讨论】:

  • 不要关注标签,rowscolumns。只需计算维数 - 1,2, 3 等。在谈论 2d 数组时,行和列最有意义。使用一维数组,谈论元素更有意义。但这只是惯例。
  • 哦,太好了,非常感谢!

标签: python arrays numpy shape


【解决方案1】:

这只是符号 - 在 Python 中,元组通过使用逗号与表达式分组(或操作顺序)区分开来 - 也就是说,(1,2,3) 是一个元组,(2x + 4) ** 5 包含一个表达式 2x + 4。为了使单元素元组与单元素表达式区分开来,否则会模棱两可((1)(1) - 这是单元素元组,它是一个计算结果为 1 的简单表达式?),我们使用尾随逗号来表示元组。

你得到的是一个单一维度的响应,因为只有一个维度要测量,打包到 tuple 类型中。

【讨论】:

    【解决方案2】:

    Numpy 不仅支持二维数组,还支持多维数组,多维是指 1-D、2-D、3-D .... n-D,并且有一种表示各自的格式维度数组。 array.shapelen 可以为您提供该数组的维数。如果数组是一维的,则无需表示为(m, n),或者如果数组是3-D,则(m, n) 不足以表示其维度。

    所以array.shape 的输出并不总是(m, n) 格式,它取决于数组本身,并且您将获得不同维度的不同输出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-03
      • 1970-01-01
      • 2023-03-19
      • 2017-09-10
      • 2016-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多