numpy n.无量纲

2ic8powd  于 2022-12-04  发布在  其他
关注(0)|答案(2)|浏览(118)

我是一个新手,并试图了解什么是维度的基本问题,
我尝试了以下命令,并试图了解为什么最后2个数组的ndim是相同的?

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

我的理解是...

  1. Case 1:
  2. array([[1, 2, 3],
  3. [4, 5, 6]])
  4. 2 elements are present in main lists, so ndim is-2
  5. Case 2:
  6. array([[ 0, 1, 2, 3, 4],
  7. [ 5, 6, 7, 8, 9],
  8. [10, 11, 12, 13, 14]])

主列表中存在3个元素,do ndim为-3

2exbekwf

2exbekwf1#

一个数组的shape是它的维数的元组。一个一维数组的形状是(n,)。一个二维数组的形状是(n,m)(就像你的例子2和3),一个三维数组的形状是(n,m,k)等等。
因此,虽然第二个和第三个示例的形状不同,但两种情况下的尺寸均为2:

  1. >>> a= np.array([[1,2,3],[4,5,6]])
  2. >>> a.shape
  3. (2, 3)
  4. >>> b=np.arange(15).reshape(3,5)
  5. >>> b.shape
  6. (3, 5)

如果你想在你的例子中添加另一个维度,你必须这样做:

  1. a= np.array([[[1,2,3]],[[4,5,6]]])

  1. np.arange(15).reshape(3,5,1)

您可以通过以下方式继续添加维:
一维:

  1. >>> a = np.zeros((2))
  2. array([ 0., 0.])
  3. >>> a.shape
  4. (2,)
  5. >>> a.ndim
  6. 1

两个维度:

  1. >>> b = np.zeros((2,2))
  2. array([[ 0., 0.],
  3. [ 0., 0.]])
  4. >>> b.shape
  5. (2,2)
  6. >>> b.ndim
  7. 2

三个维度:

  1. >>> c = np.zeros((2,2,2))
  2. array([[[ 0., 0.],
  3. [ 0., 0.]],
  4. [[ 0., 0.],
  5. [ 0., 0.]]])
  6. >>> c.shape
  7. (2,2,2)
  8. >>> c.ndim
  9. 3

四个维度:

  1. >>> d = np.zeros((2,2,2,2))
  2. array([[[[ 0., 0.],
  3. [ 0., 0.]],
  4. [[ 0., 0.],
  5. [ 0., 0.]]],
  6. [[[ 0., 0.],
  7. [ 0., 0.]],
  8. [[ 0., 0.],
  9. [ 0., 0.]]]])
  10. >>> d.shape
  11. (2,2,2,2)
  12. >>> d.ndim
  13. 4
展开查看全部
klsxnrf1

klsxnrf12#

虽然@atomh33ls有一个很棒的书面答案,但我生成了这个可视化视图,以帮助沟通numpy.ndarray.shapenumpy.ndarray.ndim之间的差异。
在此视觉效果中,ndim会随着每一个新滑杆移动到1以上而增加。当m设定为1,并以shape(1,)定义一维ndarray时,会先看到这种情况。
请注意,我使用mnk来表示每个附加维度的长度。

相关问题