Python 多维数组的形状表示什么?
二维阵列的形状意味着什么?它是否类似于数组中的行数和列数?对于3D或4D阵列,这意味着什么?考虑下面的例子:Python 多维数组的形状表示什么?,python,numpy,multidimensional-array,Python,Numpy,Multidimensional Array,二维阵列的形状意味着什么?它是否类似于数组中的行数和列数?对于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) 您自己说过它是一个2D数组,这意味着它有两个维度。 [[1]]是一个1 x 1的矩阵,这就是为什么将(1,1)作为输出 编辑:
import numpy as np
arr = np.array([[1]])
print(arr) # output: [[1]]
print(arr.ndim) # output: 2
print(arr.shape) # output: (1, 1)
您自己说过它是一个2D数组,这意味着它有两个维度。
[[1]]
是一个1 x 1的矩阵,这就是为什么将(1,1)
作为输出
编辑:问题:“对于[[1]],第二维度上没有元素,第二维度上的大小不应该为零吗”
答:在n维数组中,需要n个坐标来表示数组的任何元素。由于
[[1]]
是一个二维数组,您需要两个坐标,(0,0)
来表示数组中的唯一元素。可能您在可视化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行,结果是1d数组(计算[])
具有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]])
和2d切片:
In [169]: np.arange(4).reshape(2,2)[:1,:1]
Out[169]: array([[0]])
“当一个维度上只有一个元素时”-不,那里有两个维度。你看到了
print(arr.ndim)
print2
。见鬼,你自己称它为2D数组。因为它不清楚。我现在已经完善了这个问题。请看更新后的问题并提供合适的答案。自从这个问题结束后,我一直无法提出新的问题。所以,如果你能再看看这个问题的开头,对我会有很大帮助。谢谢根据,数组的形状是一个整数元组,表示数组沿每个维度的大小。对于[[1]],第二维上没有元素,第二维上的大小不应该为零。不,你误解了数组(或矩阵)的含义@Sid:你似乎希望一个1乘1的数组有1+1个元素,而不是1*1个元素。元素不属于维度或类似的东西。
In [169]: np.arange(4).reshape(2,2)[:1,:1]
Out[169]: array([[0]])