【问题标题】:What does the shape of a multi-dimensional array signify? [closed]多维数组的形状代表什么? [关闭]
【发布时间】:2021-02-06 04:00:22
【问题描述】:

二维数组的形状是什么意思?它就像数组中的行数和列数吗?在 3D 或 4D 阵列的情况下是什么意思?考虑以下示例:

import numpy as np

arr = np.array([[1]])
print(arr) # output: [[1]]
print(arr.ndim) # output: 2
print(arr.shape) # output: (1, 1)

【问题讨论】:

  • "当一个维度上只有一个元素时" - 不,那里有两个维度。
  • 你看到print(arr.ndim)如何打印2
  • 见鬼,你自己称它为二维数组。
  • 因为不清楚。
  • 我现在已经完善了这个问题。您能否查看更新的问题并提供合适的答案。自从这个问题关闭以来,我一直无法提出新问题。因此,如果您可以再次打开这个问题,这将对我有很大帮助。谢谢!

标签: python numpy multidimensional-array


【解决方案1】:

也许您在可视化 1x1 数组时遇到了问题。

In [161]: arr = np.array([[1]])
In [162]: arr
Out[162]: array([[1]])
In [163]: arr.shape
Out[163]: (1, 1)

元素总数为1,维度的乘积,1*1:

In [164]: arr.size
Out[164]: 1

如果我们选择 1 行,结果是一维数组(计算 [])

In [165]: arr[0]           # arr[0,:]
Out[165]: array([1])

有 2 个索引,一个标量:

In [166]: arr[0,0]
Out[166]: 1

选择 1 列,再次选择 1d

In [167]: arr[:,0]
Out[167]: array([1])

或者考虑一个 2x2 数组:

In [168]: np.arange(4).reshape(2,2)
Out[168]: 
array([[0, 1],
       [2, 3]])

还有一个二维切片:

In [169]: np.arange(4).reshape(2,2)[:1,:1]
Out[169]: array([[0]])

【讨论】:

    【解决方案2】:

    您自己说过这是一个 2D 数组,这意味着它有 2 个维度。
    [[1]] 是一个 1 x 1 矩阵,这就是为什么您会得到 (1, 1) 作为输出。

    编辑:
    问题:“对于 [[1]],沿第二维没有元素,沿第二维的大小不应该为零"
    答案: 在一个 n 维数组中,您需要 n 个坐标来表示数组的任何元素。由于[[1]] 是一个二维数组,因此您需要 2 个坐标(此处为 (0,0))来表示数组中的唯一元素。

    【讨论】:

    • 根据cs231n.github.io/python-numpy-tutorial,数组的形状是一个整数元组,给出了数组沿每个维度的大小。对于 [[1]],沿第二维没有元素,沿第二维的大小不应该为零。
    • 不,您误解了数组(或矩阵)的含义
    • @Sid:您似乎期望 1×1 数组具有 1+1 而不是 1*1 元素。元素不“属于”维度或类似的东西。
    猜你喜欢
    • 1970-01-01
    • 2021-06-03
    • 1970-01-01
    • 1970-01-01
    • 2019-03-31
    • 1970-01-01
    • 2012-07-04
    • 1970-01-01
    • 2019-09-13
    相关资源
    最近更新 更多